Skip to content
CAI
Software that uses CAICheck a score

rubycdp/cuprite

63.5

Adequate · 19 September 2026

1.2k

lines of production code

Ruby

with JavaScript

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Cuprite is a Capybara driver for browser automation that leverages the Ferrum library to control Chromium-based browsers via the Chrome DevTools Protocol. It provides capabilities for interacting with web pages, including handling HTML5 drag-and-drop, managing time-based inputs, and filtering network requests. The system focuses on reliable test execution by exposing configuration options for browser behavior and offering robust error handling for stale elements and browser crashes.

Features

Support for HTML5 drag-and-drop and time inputs

The Cuprite driver now emulates HTML5 drag-and-drop interactions, allowing users to drag elements between targets with proper event dispatching (dragstart, dragenter, dragover, drop, etc.) and modifier key support. Additionally, the driver now correctly handles HTML5 time-based input types (time, date, month, week, datetime-local), ensuring that values are set and input events are triggered appropriately for these fields.

lib/capybara/cuprite/javascripts · high confidence

Removals

Removed internal browser client, process, and WebSocket implementations

The internal classes responsible for managing the browser lifecycle and communication—specifically \Browser::Client\, \Browser::Process\, and \Browser::WebSocket\—have been removed from the codebase. This deletion eliminates the custom logic for spawning Chrome/Chromium processes, handling command-line arguments, and managing WebSocket connections for debugging.

lib/capybara/cuprite/browser · high confidence

Behavioural changes

Added Bundler binstubs and updated console driver require path

The project now includes generated binstubs for rake and rspec in the bin directory, ensuring these tools run consistently with the project's Gemfile dependencies. Additionally, the bin/console script was updated to require 'capybara/cuprite' instead of the previous 'cuprite' path, aligning with the current library's API structure.

bin · high confidence

Cuprite driver now inherits from Ferrum::Browser and exposes new configuration options

The Cuprite driver has been refactored to inherit directly from \Ferrum::Browser\ instead of managing its own process and client, simplifying the architecture. This change introduces new browser-level configuration options: \raise\_on\_unhandled\_modal\ allows tests to fail when JavaScript dialogs are not handled, and \url\_blacklist\/\url\_whitelist\ enable network request filtering. The driver also now supports window size management via \@options.window\_size\ and resets this size on session reset. Additionally, the \Cookie\ class now exposes \size\, \session?\, and \httpOnly\ (corrected casing) attributes, and the driver version has been bumped to 0.18.

lib/capybara/cuprite · high confidence

Refactor Node implementation to use Ferrum and improve error handling

The Cuprite Node class has been refactored to delegate core operations to the Ferrum library, changing the internal representation from separate page\_id and id to a single node object. This change updates how errors are handled, introducing specific exceptions like InvalidSelector and MouseEventFailed with clearer messages, and ensures that obsolete nodes are detected and raised as ObsoleteNode errors when interactions occur on disconnected elements.

cuprite · high confidence

Switches underlying browser automation engine to Ferrum

The Capybara Cuprite driver now relies on the Ferrum library for browser communication instead of its previous implementation. This change updates the internal dependencies and requires the Ferrum gem, which may alter low-level browser interaction behavior and performance characteristics for users relying on the driver.

lib/capybara · high confidence

Test coverage

Added tests for driver configuration options; Expanded test fixtures for browser interaction scenarios; Removal of legacy unit test suite; Updated driver and session specs with new test coverage; Updated test fixtures in spec/tmp; Updated test infrastructure and CI artifact handling; Updated test support infrastructure for Cuprite and Ferrum.

Dependencies

Updated jQuery to version 3.7.1

The jQuery library included in the test support assets has been upgraded from a previous version to 3.7.1. This ensures that tests relying on this public script file use the latest stable release of jQuery.

spec/support/public · high confidence

Upgrade to Ferrum 0.18 and Capybara 3, drop Ruby 2.6 support

The gem now relies on Ferrum (\~\> 0.18.0) instead of the previous driver stack, and requires Capybara \~\> 3.0. Development dependencies have been updated (e.g., RSpec \~\> 3.10, Rubocop \~\> 1.22, Sinatara \~\> 3.2), and the project now requires Ruby \>= 3.1, dropping support for Ruby 2.6. The homepage and metadata have been updated to reflect the move to the rubycdp organization.

(dependencies) · high confidence

Housekeeping

Initial project scaffolding and configuration

The repository is initialized with essential configuration files including \.editorconfig\, \.rspec\, \.rubocop.yml\ (targeting Ruby 3.1), a \LICENSE\, and a \CHANGELOG.md\ documenting versions from 0.12 through 0.18. The \README.md\ provides installation and usage instructions for the Cuprite Capybara driver, and the \Rakefile\ is updated to use the \documentation\ format for RSpec output in CI environments.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 64.

Lenses

  • Code Health 88
  • Architecture 69
  • Maturity 55
  • Readiness 62
  • Security 100

Changes since last survey

  • 300 commits — 223 feature/other, 77 fixes

By area

  • lib/capybara — 135 commits
  • (root) — 81 commits
  • (repo) — 39 commits
  • spec/spec_helper.rb — 13 commits
  • .github/workflows — 8 commits
  • spec/integration — 6 commits
  • spec/features — 5 commits
  • .github/gemfiles — 4 commits
  • spec/support — 4 commits
  • .github/FUNDING.yml — 3 commits
  • spec/lib — 1 commit
  • spec/tmp — 1 commit

Notable commits

  • fix: * Fix build * Fix lint errors * Rendered html differs * Add matrix gem * Add ruby 3.1 * Fix linter issues * Fix Psych::DisallowedClass: Tried to load unspecified class: Sinatra::IndifferentHash * Remove Ruby 2.6 because capybara (~> 3.37.1) depends on Ruby (>= 2.7.0) and build fails for Ruby (= 2.6.10) * Remove extra gemfiles
  • fix: * Fix screen on MacOS * Inherits window size
  • fix: Add fix for setting color input values
  • fix: Comment out tests as fixed in ferrum master
  • fix: Fix #102 no more monkey patching
  • fix: Fix #110 add CUPRITE_DEBUG back
  • fix: Fix #145 TypeError: Cannot read property 'parentNode' of null at Cuprite.path
  • fix: Fix #17 implement attachments
  • fix: Fix #21 Implement js errors
  • fix: Fix #31 full support for send_keys
  • fix: Fix #46 undefined local variable or method `exe'
  • fix: Fix #48 Can't connect to running Chrome browser session
  • fix: Fix #93 lag after exiting debug
  • fix: Fix LocalJumpError
  • fix: Fix build
  • fix: Fix build
  • fix: Fix build
  • fix: Fix build
  • fix: Fix cannot read property 'parentNode' of null
  • fix: Fix capybara 2 build
  • …and 280 more

Architecture

  • 0 containers · 1 bounded contexts · 0 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

rubycdp/cuprite was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ffdc57d8af365ff2044633f364cc3d9912ca09f9 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.