rubycdp/cuprite
63.5
Adequate · 19 September 2026
1.2k
lines of production code
Ruby
with JavaScript
1
measurement over time
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.