Audit your Next.js source code and rendered pages against all 106 RGAA v4.1.2 criteria (aligned with WCAG 2.1 A/AA). Automate ~65% of the criteria, generate reports in 5 formats, block CI on regressions, and feed your legal accessibility declaration — without false promises about what automation can and cannot do.
- 106 RGAA v4.1.2 criteria — complete catalog, automation level stated per criterion
- Two-phase analysis — Babel AST static analysis + Playwright runtime (real Chromium)
- 5 output formats — JSON, HTML, SARIF (GitHub Code Scanning), Markdown, JUnit
- CI/CD native — configurable threshold, exit code 1 on failure, inline PR annotations
- Honest by design —
needs-reviewcriteria are clearly marked, never inflated - GitHub Action included
- i18n —
en-US(default) andfr-FR
pnpm add -D @kodalabs-io/eqo
# npm install -D @kodalabs-io/eqo
# bun add -D @kodalabs-io/eqoFor runtime analysis (browser), install the Playwright peer dependencies:
pnpm add -D playwright @axe-core/playwright axe-core
pnpm exec playwright install chromiumNo browser? Start with
--static-only. Themes 1, 2, 5, 6, 8, 9, 11 — no Playwright needed.
pnpm eqo init # npx eqo init · bunx eqo initCreates rgaa.config.ts in your project root.
// rgaa.config.ts
import { defineConfig } from "@kodalabs-io/eqo";
export default defineConfig({
baseUrl: "http://localhost:3000",
projectName: "my-app",
locale: "fr-FR",
pages: [
{ path: "/", name: "Home" },
{ path: "/contact", name: "Contact" },
{ path: "/accessibilite", name: "Accessibility" },
],
output: [
{ format: "json", path: "./public/rgaa-report.json" },
{ format: "sarif", path: "./reports/rgaa.sarif" },
{ format: "markdown", path: "./reports/rgaa.md" },
],
thresholds: {
complianceRate: 0, // 0 = never block CI. Set to 80 to enforce a threshold.
failOn: "threshold",
},
});npx eqo analyze # Full audit: static + browser
npx eqo analyze --static-only # No browser — runs in seconds
npx eqo analyze --threshold 80 # Override threshold for a one-off checkname: Accessibility Audit
on:
push:
branches: [main]
pull_request:
jobs:
rgaa:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Start Next.js app
run: |
npm install && npm run build && npm start &
npx wait-on http://localhost:3000
- name: Run RGAA audit
uses: kodalabs-io/eqo@v1
with:
threshold: 0 # 0 = report only, never blocks CI
locale: fr-FR
upload-sarif: true # Adds inline annotations to your PR diffSet
threshold: 80to fail the pipeline if compliance drops below 80%.
| Introduction | RGAA law, who must comply, and Eqo's honest scope |
| Getting Started | Install, configure, and run your first audit in 5 minutes |
| Configuration | Full rgaa.config.ts reference — every option explained |
| Accessibility Page | Build your /accessibilite page in Next.js |
| CI/CD Integration | Blocking strategies, thresholds, PR comments |
| CLI Reference | All eqo commands and flags |
| API Reference | Programmatic usage as a library |
MIT — Copyright © 2026 Koda Labs