Skip to content
This repository was archived by the owner on Sep 30, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.0.0] - 2026-06-16

First stable release. No functional changes since `0.2.0` — this tags the API as
stable under [Semantic Versioning](https://semver.org/spec/v2.0.0.html). The
public API is the documented surface of `AxeCuprite`, `AxeCuprite::Configuration`,
`AxeCuprite::Runner`, the result wrappers (`Results`/`Violation`/`Node`/
`ContrastData`), the error classes, and the RSpec matcher DSL; classes such as
`AxeCuprite::Injector` and `AxeCuprite::DeepFreeze` are internal and not covered
by the stability guarantee.

### Fixed
- The packaged gem no longer ships the dev-only vendoring rake tasks
(`lib/axe/cuprite/tasks/*.rake` — `axe:update` / `axe:verify` / `axe:version`).
Expand Down Expand Up @@ -129,3 +139,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
auto-inject toggle, and report-only mode.
- `rake axe:update[VERSION]` to refresh the vendored axe-core engine and bump
the `AXE_CORE_VERSION` constant.

[Unreleased]: https://github.com/Guided-Rails/axe-cuprite/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/Guided-Rails/axe-cuprite/compare/v0.2.0...v1.0.0
[0.2.0]: https://github.com/Guided-Rails/axe-cuprite/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/Guided-Rails/axe-cuprite/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/Guided-Rails/axe-cuprite/releases/tag/v0.1.0
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# axe-cuprite

[![Gem Version](https://img.shields.io/gem/v/axe-cuprite)](https://rubygems.org/gems/axe-cuprite)
[![CI](https://github.com/Guided-Rails/axe-cuprite/actions/workflows/ci.yml/badge.svg)](https://github.com/Guided-Rails/axe-cuprite/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.txt)

Run the [axe-core](https://github.com/dequelabs/axe-core) accessibility engine
against pages in your **Capybara system/feature tests driven by
[Cuprite](https://github.com/rubycdp/cuprite)** (the CDP/Ferrum headless-Chrome
Expand Down Expand Up @@ -33,6 +37,14 @@ best-effort fallback exists), but they are unsupported and untested.
There is no runtime dependency on Selenium, Cuprite, or Ferrum — the only runtime
dependency is Capybara. You bring your own driver.

## Requirements

- **Ruby** >= 3.0
- **Capybara** >= 3.0, < 4.0 (the only runtime dependency)
- **[Cuprite](https://github.com/rubycdp/cuprite)** as the Capybara driver — the
only supported and tested driver
- **Chrome or Chromium**, which Cuprite drives over CDP

## Installation

```ruby
Expand Down Expand Up @@ -263,6 +275,22 @@ sha512 of the vendored engine is recorded in
with `rake axe:verify` (CI does this on every run). Note the bump in
`CHANGELOG.md`.

## Versioning

axe-cuprite follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
The **public API** covered by that guarantee is the documented surface:
`AxeCuprite` (module methods), `AxeCuprite::Configuration`, `AxeCuprite::Runner`,
the result wrappers (`Results` / `Violation` / `Node` / `ContrastData`), the error
classes, and the RSpec matcher DSL (`be_axe_clean` / `be_accessible` and its
chainers). Classes like `AxeCuprite::Injector` and `AxeCuprite::DeepFreeze` are
internal implementation details and may change in any release. Breaking changes to
the public API only land in a major version, and every release is noted in
[`CHANGELOG.md`](CHANGELOG.md).

Note that the **vendored axe-core version** can change in a minor release; axe may
report new violations after an engine bump, which can turn a previously-green
suite red. Such bumps are always called out in the changelog.

## Licensing

- **axe-cuprite's own code** is licensed under the **MIT** license — see
Expand Down
2 changes: 2 additions & 0 deletions axe-cuprite.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ Gem::Specification.new do |spec|

spec.metadata["source_code_uri"] = spec.homepage
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
spec.metadata["bug_tracker_uri"] = "#{spec.homepage}/issues"
spec.metadata["documentation_uri"] = "#{spec.homepage}/blob/main/README.md"
spec.metadata["rubygems_mfa_required"] = "true"

spec.files = Dir[
Expand Down
6 changes: 4 additions & 2 deletions lib/axe/cuprite.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
require "axe/cuprite/runner"

# axe-cuprite drives the axe-core accessibility engine through Capybara's
# driver-neutral JavaScript API, so it works with Cuprite (Ferrum/CDP) and any
# other real-browser Capybara driver.
# driver-neutral JavaScript API. That approach is what lets it avoid Selenium
# internals and work on Cuprite (Ferrum/CDP) — the only supported and tested
# driver. Other real-browser drivers may work via a best-effort, untested
# fallback, but they are unsupported.
#
# Quick start:
#
Expand Down
2 changes: 1 addition & 1 deletion lib/axe/cuprite/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

module AxeCuprite
# Version of the axe-cuprite gem itself.
VERSION = "0.2.0"
VERSION = "1.0.0"

# Version of the axe-core engine vendored under lib/axe/cuprite/vendor/axe.min.js.
# Keep this in sync with the vendored file via `rake axe:update`.
Expand Down