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.