Releases: gonzoblasco/a11y-fixer
Release list
v0.6.0 - Fixer Engine, CLI, Docker Action
🛠️ a11y-fixer v0.6.0 — Fixer Engine, CLI, Docker Action
Accessibility audits for GitHub PRs, without SaaS lock-in.
This release marks a major milestone: the project has evolved from a Node-based MVP to a full Docker action with a CLI, fix suggestions engine, and production-ready infrastructure.
✨ What's new in v0.6.0
Fixer Engine (src/core/fixer.ts)
Generates concrete, actionable fix suggestions for accessibility violations with three fixability levels:
- auto — safe, deterministic code patches (e.g. fixing
aria-labeledby→aria-labelledby) - suggest — needs human review but provides replacement HTML (e.g. adding
alt=""to images, wrapping content in<main>) - explain — cannot be automated, provides detailed guidance (e.g. color contrast ratios)
Supports 8 violation types with code patches in unified diff format.
CLI (a11y-fixer)
Run audits and fixes from the command line:
a11y-fixer audit --url http://localhost:3000
a11y-fixer fix --url http://localhost:3000
a11y-fixer suggest --url http://localhost:3000 --output jsonDocker Action
The action now runs inside a Playwright Docker container (mcr.microsoft.com/playwright:v1.61.1-jammy), ensuring browser compatibility across all runners. No more Playwright installation issues.
Production-ready Infrastructure
- Baseline cache via GitHub Actions artifacts — evolution comparison now works in production
- Octokit native API — PR comments and check statuses use
@actions/githubwithghCLI fallback - Entry point guard — prevents accidental execution on import
target_urlinput — supportshttp://host.docker.internal:3000for Docker container accesssimple-git-hooks— pre-commit hook runs Biome + tests automatically
📈 Progress from v0.1.0 to v0.6.0
| Version | Focus | Key Changes |
|---|---|---|
| v0.1.0 | MVP: Core Engine | Config, diff analyzer, route resolver, Playwright + axe-core, PR comments |
| v0.4.0 | Docker Action | Converted to Docker action for Playwright compatibility |
| v0.4.1 | Execution Fix | Added run() invocation at module level |
| v0.5.0 | Container Networking | target_url input, gh CLI updated |
| v0.5.1 | PR Comment Fix | --repo flag for gh, GITHUB_TOKEN env var |
| v0.6.0 | Fixer + CLI | Fix suggestions engine, CLI, GHA artifacts cache, octokit |
🧪 Quality
- 115 tests across 11 test suites
- TypeScript strict mode
- Biome lint + format
- CI pipeline: typecheck → lint → tests → build
- Integration tests with real axe-core + Playwright
- Pre-commit hooks with simple-git-hooks
📚 Documentation
README.md— quick start, config reference, CLI usageCHANGELOG.md— full version historydocs/design/DESIGN.md— full configuration specdocs/ROADMAP.md— upcoming phasesCONTRIBUTING.md— how to contributeexamples/— Next.js, React, Vue, Angular workflows
🔮 What's next
- AI-powered fix suggestions with your own API key
- GitHub Marketplace listing
- PR suggestion comments (apply fixes directly from the PR)
Full changelog: CHANGELOG.md
v0.5.1 — gh pr comment fix + biome formatting
Fixed
gh pr commentnow works inside Docker container — added--repo owner/repoflag soghknows which repository to target, and setGITHUB_TOKENenv var in addition toGH_TOKENfor broader compatibility.- Biome formatting — fixed code style in
github.ts.
Full changelog: CHANGELOG.md
v0.1.0 - MVP: Core Engine
🛠️ a11y-fixer v0.1.0 — MVP: Core Engine
Accessibility audits for GitHub PRs, without SaaS lock-in.
a11y-fixer runs axe-core inside Playwright on every pull request, compares the results against your main branch, and posts a structured comment so your team catches accessibility regressions before they ship.
No external dashboard. No per-seat pricing. Your code, your runners, your keys.
✨ What ships in v0.1.0
Scan what matters
- Hybrid route resolution: define core routes once, and let the bot auto-detect Next.js App Router pages changed in the PR.
- Real browser engine: Chromium headless via Playwright, with configurable per-route timeouts.
- Authenticated routes: cookies, HTTP headers, or Bearer tokens for pages behind login.
Understand the impact
- Baseline comparison: every PR is compared against
main— see what is new, what got fixed, and what remains persistent. - Suggested fixes: 8 built-in remediation templates for common axe-core rules (color contrast, alt text, labels, headings, and more).
- Structured PR comments: clean markdown with status badge, impact severity, affected elements, and next steps.
Stay in control
.a11y-fixer.ymlconfiguration: WCAG level, max impact threshold, max new violations, ignore rules.- Optional AI explanations using your own OpenAI / Anthropic / OpenRouter key.
- CI-tested: 79 tests across 8 suites, with a full GitHub Actions pipeline.
🚀 Quick start
# .github/workflows/accessibility.yml
name: Accessibility Audit
on:
pull_request:
branches: [main]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Start my app
run: npm run dev &
- uses: gonzoblasco/a11y-fixer@v0.1.0
with:
config: .a11y-fixer.yml# .a11y-fixer.yml
level: AA
max_impact: serious
max_new_violations: 5
routes:
core:
- /
- /login
- /dashboard📊 Example output
A failing PR comment looks like this:
❌ Accessibility Check: FAILING — 3 new violations (threshold: 5)
Found 7 accessibility violations (3 new).
Violations
🔴 CRITICAL
color-contrast— Ensures buttons have enough contrast
- Element:
.primary-button- HTML:
<button class="primary-button">Submit</button>- Issue: Fix the contrast ratio to at least 4.5:1.
How to fix it:
Adjust foreground and background colors until the contrast ratio is at least 4.5:1 for normal text or 3:1 for large text.Evolution
- 🆕 3 new — introduced in this PR
- 🔄 4 persistent — already existed in main
Trend: ⬇️ This PR worsens accessibility
🧪 Tested and verified
- ✅ 79 tests passing (8 suites)
- ✅ TypeScript strict mode
- ✅ Biome lint + format
- ✅ CI pipeline: typecheck → lint → tests → build
- ✅ Integration tests with real axe-core + Playwright
📚 Documentation
README.md— quick start and referencedocs/design/DESIGN.md— full configuration specdocs/ROADMAP.md— what comes nextdocs/TRACKER.md— MVP task breakdown
🔮 What is next
This release is the foundation. Upcoming phases include:
- Fase 2: smarter thresholds, impacted-routes reporting, and diff-aware violation grouping
- Fase 3: AI-powered fix suggestions with your own API key
- Fase 4: GitHub Marketplace listing and documentation site
Full changelog: see the v0.1.0 milestone and the commit history.