Accessibility Testing
Automated WCAG accessibility testing powered by axe-core and Playwright. Scan every page for violations with severity scoring.
Accessibility Testing
AegisRunner provides automated accessibility testing powered by axe-core and Playwright accessibility assertions. Every page discovered during a crawl is scanned against WCAG standards, producing a per-page accessibility score, violation breakdown by severity, and actionable remediation guidance.
How It Works
Two analysis passes run on every page state:
- axe-core audit — Runs against WCAG 2.0 A, 2.0 AA, 2.1 A, and 2.1 AA rule sets. Catches structural violations (missing alt text, color contrast, missing labels, improper ARIA).
- Playwright accessibility checks — Verifies buttons have accessible names, links have text, images have alt attributes, form inputs have labels.
WCAG Standards
| Tag | Standard | Description |
|---|---|---|
wcag2a | WCAG 2.0 Level A | Minimum requirements: text alternatives, keyboard access, seizure prevention |
wcag2aa | WCAG 2.0 Level AA | Most regulations target this: color contrast, resize, consistent navigation |
wcag21a | WCAG 2.1 Level A | Mobile and cognitive: orientation, pointer cancellation |
wcag21aa | WCAG 2.1 Level AA | Reflow, text spacing, content on hover/focus, status messages |
Interpreting Results
Scoring
Each page scores 0-100. Deductions per violation:
| Impact | Deduction |
|---|---|
| Critical | -25 |
| Serious | -15 |
| Moderate | -5 |
| Minor | -1 |
Violation Details
Each violation includes: rule ID, impact level, description, help URL, and up to 5 affected CSS selectors.
ARIA Snapshots (Pro+)
Pro and above captures the full accessibility tree: landmark regions, heading structure, interactive element states (expanded, checked, disabled).
Common Violations
| Rule | Impact | Fix |
|---|---|---|
color-contrast | Serious | Increase contrast to 4.5:1 (normal) or 3:1 (large text) |
image-alt | Serious | Add descriptive alt attributes. Use alt="" for decorative images |
button-name | Serious | Add text, aria-label, or aria-labelledby to every button |
label | Serious | Associate every input with a label via for/id or aria-label |
html-has-lang | Serious | Add lang attribute to html element |