Skip to content

v0.1.0 - MVP: Core Engine

Choose a tag to compare

@gonzoblasco gonzoblasco released this 27 Jul 18:42
· 40 commits to main since this release
17ec7e6

๐Ÿ› ๏ธ 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.yml configuration: 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


๐Ÿ”ฎ 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.