Baseline-driven axe-core accessibility audits for websites and web applications. Detect new WCAG violations, track resolved findings, approve narrowly scoped exceptions with expiration dates, and monitor accessible-name changes across deployments.
Release status: Initial public alpha. Automated checks find many important issues but do not replace keyboard, screen-reader, zoom, motion, and cognitive-accessibility testing by people.
- Multi-page axe-core audits in real Chromium
- WCAG tag selection
- Violation and critical-impact budgets
- Stable page/rule/target fingerprints
- Baseline comparison for new and resolved findings
- Target-scoped exceptions with expiration dates and reasons
- Configurable accessible-name snapshots
- Incomplete axe results surfaced for manual review
- JSON and Markdown reports with GitHub job summaries
- Docker image and GitHub Action
Requires Node.js 22.19 or newer and Chrome or Chromium.
npm install
npm run audit -- --config config.example.yamlCompare with a retained report:
npm run audit -- --config config.example.yaml --baseline previous-report.jsonReports are written to reports/accessibility-regression-report.json and
reports/accessibility-regression-report.md. Failed budgets or regressions return exit code 1;
configuration and execution errors return exit code 2.
Exceptions should be narrow, explained, and temporary:
exceptions:
- rule: color-contrast
target: ".legacy-banner"
expires: 2026-12-31
reason: Legacy banner scheduled for replacementExpired exceptions stop suppressing findings automatically.
Selectors in name_snapshots retain the computed label surrogate for matching elements. Baseline
comparison reports changed labels, helping detect accidental button and navigation renaming.
This repository is a generic audit engine. It contains no client data, private URLs, credentials, internal accessibility policy, or production exception lists.
MIT © 2026 CodeVelo.dev LLC.