diff --git a/CHANGELOG.md b/CHANGELOG.md index 5240a1e..a2b9acc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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`). @@ -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 diff --git a/README.md b/README.md index 8f9557c..d62ad4e 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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 @@ -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 diff --git a/axe-cuprite.gemspec b/axe-cuprite.gemspec index dc50141..455e916 100644 --- a/axe-cuprite.gemspec +++ b/axe-cuprite.gemspec @@ -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[ diff --git a/lib/axe/cuprite.rb b/lib/axe/cuprite.rb index 5cecba8..3e0438f 100644 --- a/lib/axe/cuprite.rb +++ b/lib/axe/cuprite.rb @@ -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: # diff --git a/lib/axe/cuprite/version.rb b/lib/axe/cuprite/version.rb index ad198be..032a3c2 100644 --- a/lib/axe/cuprite/version.rb +++ b/lib/axe/cuprite/version.rb @@ -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`.