Accessibility audit

Audit results for every page on a11yequitas.org. Playwright + axe-core tests run on every build against WCAG 2.2 AAA across 6 theme/font combinations. Accessibility Insights for Web assessments are run manually each release.

Last run · 2026-05-24352 checks · 0 failures · 580.2s · WCAG 2.2 AAA × 6 theme/font combos · axe-core (Playwright, Chromium)

Methodology

Two engines, one bar — why both matteraxe-core (Deque) implements ~95 rules covering most of WCAG 2.2 A/AA/AAA — strong on color contrast, ARIA roles, and form labels. Alfa (Siteimprove) implements the W3C ACT Rules standard — strong on semantic structure, focus order, and edge cases (e.g., aria-hidden inside focusable elements, redundant landmarks) that axe-core does not check. The two engines overlap by ~30% — running both catches roughly 1.5× the violations of either alone. CI fails if either reports any issue.
  • Playwright + axe-core (@axe-core/playwright) — headless Chromium, WCAG 2.2 A/AA/AAA rule set across 6 theme/font combos. Catches most contrast, ARIA, and form-label issues.
  • Playwright + Alfa (@siteimprove/alfa-playwright) — W3C ACT-Rules engine, one audit per route. Catches semantic-structure and focus issues axe-core misses.
  • Accessibility Insights for Web — structured guided assessment (Fast Pass + Assessment) run manually each release.
  • Screen reader testing — manual pass against WCAG 2.2 AAA. VoiceOver + Safari (macOS) complete. NVDA + Firefox (Windows) and TalkBack + Chrome (Android) planned.

Results by page

Manual assessment planEvery page below will be manually checked against WCAG 2.2 AAA using Accessibility Insights for Web. Rows still showing "—" in the AI manual column are queued for the next assessment cycle.
Accessibility audit results. axe = automated axe-core violations. alfa = Siteimprove Alfa ACT-rules violations. Playwright = link to full Playwright report (both engines). AI = link to Accessibility Insights assessment. All tests target WCAG 2.2 AAA.
PageDateaxealfaPlaywrightAI manualStatus
Home2026-05-2400View reportView reportPass
About2026-05-2400View reportPass
Schools2026-05-2400View reportPass
Site workflow2026-05-2400View reportPass
More components2026-05-2400View reportPass
A11y audit tools2026-05-2400View reportPass
VoiceOver audit2026-05-2400View reportPass
NVDA audit2026-05-2400View reportPass
TalkBack audit2026-05-2400View reportPass
Model card2026-05-2400View reportView reportPass
Models2026-05-2400View reportView reportPass
Who this helps2026-05-2400View reportView reportPass
Default fonts2026-05-2400View reportView reportPass
Default styles2026-05-2400View reportView reportPass
Accessibility statement2026-05-2400View reportView reportPass
AI transparency2026-05-2400View reportPass
Accessibility audit2026-05-2400View reportPass
Security audit2026-05-2400View reportPass
Privacy policy2026-05-2400View reportPass
Accessible PDFs2026-05-2400View reportPass
Accessible tables2026-05-2400View reportPass
Accessible charts2026-05-2400View reportView reportPass
Accessible images2026-05-2400View reportPass
Accessible videos2026-05-2400View reportPass
Accessible tech stack2026-05-2400View reportPass
Tailwind for accessibility2026-05-2400View reportPass
ND accommodations2026-05-2400View reportPass
Accessible accordion2026-05-2400View reportPass
Accessible tabs2026-05-2400View reportPass
Accessible dropdown2026-05-2400View reportPass

Playwright worker results

PlaywrightAll pass
Tests
352
axe-core
192/192 · 459.3s
Alfa
32/32 · 56.4s
Workers
1
Duration
575.7s
Test list (352)
  • / [light/lexend]
  • / [light/atkinson]
  • / [light/opendyslexic]
  • / [dark/lexend]
  • / [dark/atkinson]
  • / [dark/opendyslexic]
  • /about/ [light/lexend]
  • /about/ [light/atkinson]
  • /about/ [light/opendyslexic]
  • /about/ [dark/lexend]
  • /about/ [dark/atkinson]
  • /about/ [dark/opendyslexic]
  • /schools/ [light/lexend]
  • /schools/ [light/atkinson]
  • /schools/ [light/opendyslexic]
  • /schools/ [dark/lexend]
  • /schools/ [dark/atkinson]
  • /schools/ [dark/opendyslexic]
  • /site-workflow/ [light/lexend]
  • /site-workflow/ [light/atkinson]
  • /site-workflow/ [light/opendyslexic]
  • /site-workflow/ [dark/lexend]
  • /site-workflow/ [dark/atkinson]
  • /site-workflow/ [dark/opendyslexic]
  • /more-components/ [light/lexend]
  • /more-components/ [light/atkinson]
  • /more-components/ [light/opendyslexic]
  • /more-components/ [dark/lexend]
  • /more-components/ [dark/atkinson]
  • /more-components/ [dark/opendyslexic]
  • /audit-tools/ [light/lexend]
  • /audit-tools/ [light/atkinson]
  • /audit-tools/ [light/opendyslexic]
  • /audit-tools/ [dark/lexend]
  • /audit-tools/ [dark/atkinson]
  • /audit-tools/ [dark/opendyslexic]
  • /audit-voiceover/ [light/lexend]
  • /audit-voiceover/ [light/atkinson]
  • /audit-voiceover/ [light/opendyslexic]
  • /audit-voiceover/ [dark/lexend]
  • /audit-voiceover/ [dark/atkinson]
  • /audit-voiceover/ [dark/opendyslexic]
  • /audit-nvda/ [light/lexend]
  • /audit-nvda/ [light/atkinson]
  • /audit-nvda/ [light/opendyslexic]
  • /audit-nvda/ [dark/lexend]
  • /audit-nvda/ [dark/atkinson]
  • /audit-nvda/ [dark/opendyslexic]
  • /audit-talkback/ [light/lexend]
  • /audit-talkback/ [light/atkinson]
  • /audit-talkback/ [light/opendyslexic]
  • /audit-talkback/ [dark/lexend]
  • /audit-talkback/ [dark/atkinson]
  • /audit-talkback/ [dark/opendyslexic]
  • /model-card/ [light/lexend]
  • /model-card/ [light/atkinson]
  • /model-card/ [light/opendyslexic]
  • /model-card/ [dark/lexend]
  • /model-card/ [dark/atkinson]
  • /model-card/ [dark/opendyslexic]
  • /models/ [light/lexend]
  • /models/ [light/atkinson]
  • /models/ [light/opendyslexic]
  • /models/ [dark/lexend]
  • /models/ [dark/atkinson]
  • /models/ [dark/opendyslexic]
  • /who-this-helps/ [light/lexend]
  • /who-this-helps/ [light/atkinson]
  • /who-this-helps/ [light/opendyslexic]
  • /who-this-helps/ [dark/lexend]
  • /who-this-helps/ [dark/atkinson]
  • /who-this-helps/ [dark/opendyslexic]
  • /typography/ [light/lexend]
  • /typography/ [light/atkinson]
  • /typography/ [light/opendyslexic]
  • /typography/ [dark/lexend]
  • /typography/ [dark/atkinson]
  • /typography/ [dark/opendyslexic]
  • /design-system/ [light/lexend]
  • /design-system/ [light/atkinson]
  • /design-system/ [light/opendyslexic]
  • /design-system/ [dark/lexend]
  • /design-system/ [dark/atkinson]
  • /design-system/ [dark/opendyslexic]
  • /accessibility-statement/ [light/lexend]
  • /accessibility-statement/ [light/atkinson]
  • /accessibility-statement/ [light/opendyslexic]
  • /accessibility-statement/ [dark/lexend]
  • /accessibility-statement/ [dark/atkinson]
  • /accessibility-statement/ [dark/opendyslexic]
  • /ai-transparency/ [light/lexend]
  • /ai-transparency/ [light/atkinson]
  • /ai-transparency/ [light/opendyslexic]
  • /ai-transparency/ [dark/lexend]
  • /ai-transparency/ [dark/atkinson]
  • /ai-transparency/ [dark/opendyslexic]
  • /a11y-audit/ [light/lexend]
  • /a11y-audit/ [light/atkinson]
  • /a11y-audit/ [light/opendyslexic]
  • /a11y-audit/ [dark/lexend]
  • /a11y-audit/ [dark/atkinson]
  • /a11y-audit/ [dark/opendyslexic]
  • /security-audit/ [light/lexend]
  • /security-audit/ [light/atkinson]
  • /security-audit/ [light/opendyslexic]
  • /security-audit/ [dark/lexend]
  • /security-audit/ [dark/atkinson]
  • /security-audit/ [dark/opendyslexic]
  • /privacy/ [light/lexend]
  • /privacy/ [light/atkinson]
  • /privacy/ [light/opendyslexic]
  • /privacy/ [dark/lexend]
  • /privacy/ [dark/atkinson]
  • /privacy/ [dark/opendyslexic]
  • /accessible-pdfs/ [light/lexend]
  • /accessible-pdfs/ [light/atkinson]
  • /accessible-pdfs/ [light/opendyslexic]
  • /accessible-pdfs/ [dark/lexend]
  • /accessible-pdfs/ [dark/atkinson]
  • /accessible-pdfs/ [dark/opendyslexic]
  • /accessible-tables/ [light/lexend]
  • /accessible-tables/ [light/atkinson]
  • /accessible-tables/ [light/opendyslexic]
  • /accessible-tables/ [dark/lexend]
  • /accessible-tables/ [dark/atkinson]
  • /accessible-tables/ [dark/opendyslexic]
  • /accessible-charts/ [light/lexend]
  • /accessible-charts/ [light/atkinson]
  • /accessible-charts/ [light/opendyslexic]
  • /accessible-charts/ [dark/lexend]
  • /accessible-charts/ [dark/atkinson]
  • /accessible-charts/ [dark/opendyslexic]
  • /accessible-images/ [light/lexend]
  • /accessible-images/ [light/atkinson]
  • /accessible-images/ [light/opendyslexic]
  • /accessible-images/ [dark/lexend]
  • /accessible-images/ [dark/atkinson]
  • /accessible-images/ [dark/opendyslexic]
  • /accessible-videos/ [light/lexend]
  • /accessible-videos/ [light/atkinson]
  • /accessible-videos/ [light/opendyslexic]
  • /accessible-videos/ [dark/lexend]
  • /accessible-videos/ [dark/atkinson]
  • /accessible-videos/ [dark/opendyslexic]
  • /accessible-tech-stack/ [light/lexend]
  • /accessible-tech-stack/ [light/atkinson]
  • /accessible-tech-stack/ [light/opendyslexic]
  • /accessible-tech-stack/ [dark/lexend]
  • /accessible-tech-stack/ [dark/atkinson]
  • /accessible-tech-stack/ [dark/opendyslexic]
  • /tailwind-for-accessibility/ [light/lexend]
  • /tailwind-for-accessibility/ [light/atkinson]
  • /tailwind-for-accessibility/ [light/opendyslexic]
  • /tailwind-for-accessibility/ [dark/lexend]
  • /tailwind-for-accessibility/ [dark/atkinson]
  • /tailwind-for-accessibility/ [dark/opendyslexic]
  • /reasonable-accommodations-neurodivergence/ [light/lexend]
  • /reasonable-accommodations-neurodivergence/ [light/atkinson]
  • /reasonable-accommodations-neurodivergence/ [light/opendyslexic]
  • /reasonable-accommodations-neurodivergence/ [dark/lexend]
  • /reasonable-accommodations-neurodivergence/ [dark/atkinson]
  • /reasonable-accommodations-neurodivergence/ [dark/opendyslexic]
  • /accessible-accordion/ [light/lexend]
  • /accessible-accordion/ [light/atkinson]
  • /accessible-accordion/ [light/opendyslexic]
  • /accessible-accordion/ [dark/lexend]
  • /accessible-accordion/ [dark/atkinson]
  • /accessible-accordion/ [dark/opendyslexic]
  • /accessible-tabs/ [light/lexend]
  • /accessible-tabs/ [light/atkinson]
  • /accessible-tabs/ [light/opendyslexic]
  • /accessible-tabs/ [dark/lexend]
  • /accessible-tabs/ [dark/atkinson]
  • /accessible-tabs/ [dark/opendyslexic]
  • /accessible-dropdown/ [light/lexend]
  • /accessible-dropdown/ [light/atkinson]
  • /accessible-dropdown/ [light/opendyslexic]
  • /accessible-dropdown/ [dark/lexend]
  • /accessible-dropdown/ [dark/atkinson]
  • /accessible-dropdown/ [dark/opendyslexic]
  • /reports/home-playwright/ [light/lexend]
  • /reports/home-playwright/ [light/atkinson]
  • /reports/home-playwright/ [light/opendyslexic]
  • /reports/home-playwright/ [dark/lexend]
  • /reports/home-playwright/ [dark/atkinson]
  • /reports/home-playwright/ [dark/opendyslexic]
  • /reports/home-a11y-insights/ [light/lexend]
  • /reports/home-a11y-insights/ [light/atkinson]
  • /reports/home-a11y-insights/ [light/opendyslexic]
  • /reports/home-a11y-insights/ [dark/lexend]
  • /reports/home-a11y-insights/ [dark/atkinson]
  • /reports/home-a11y-insights/ [dark/opendyslexic]
  • [alfa] / — zero Alfa failures
  • [alfa] /about/ — zero Alfa failures
  • [alfa] /schools/ — zero Alfa failures
  • [alfa] /site-workflow/ — zero Alfa failures
  • [alfa] /more-components/ — zero Alfa failures
  • [alfa] /audit-tools/ — zero Alfa failures
  • [alfa] /audit-voiceover/ — zero Alfa failures
  • [alfa] /audit-nvda/ — zero Alfa failures
  • [alfa] /audit-talkback/ — zero Alfa failures
  • [alfa] /model-card/ — zero Alfa failures
  • [alfa] /models/ — zero Alfa failures
  • [alfa] /who-this-helps/ — zero Alfa failures
  • [alfa] /typography/ — zero Alfa failures
  • [alfa] /design-system/ — zero Alfa failures
  • [alfa] /accessibility-statement/ — zero Alfa failures
  • [alfa] /ai-transparency/ — zero Alfa failures
  • [alfa] /a11y-audit/ — zero Alfa failures
  • [alfa] /security-audit/ — zero Alfa failures
  • [alfa] /privacy/ — zero Alfa failures
  • [alfa] /accessible-pdfs/ — zero Alfa failures
  • [alfa] /accessible-tables/ — zero Alfa failures
  • [alfa] /accessible-charts/ — zero Alfa failures
  • [alfa] /accessible-images/ — zero Alfa failures
  • [alfa] /accessible-videos/ — zero Alfa failures
  • [alfa] /accessible-tech-stack/ — zero Alfa failures
  • [alfa] /tailwind-for-accessibility/ — zero Alfa failures
  • [alfa] /reasonable-accommodations-neurodivergence/ — zero Alfa failures
  • [alfa] /accessible-accordion/ — zero Alfa failures
  • [alfa] /accessible-tabs/ — zero Alfa failures
  • [alfa] /accessible-dropdown/ — zero Alfa failures
  • [alfa] /reports/home-playwright/ — zero Alfa failures
  • [alfa] /reports/home-a11y-insights/ — zero Alfa failures
  • / — lang attribute is set
  • / — exactly one h1
  • / — page title is set
  • / — skip link reaches main
  • /about/ — lang attribute is set
  • /about/ — exactly one h1
  • /about/ — page title is set
  • /about/ — skip link reaches main
  • /schools/ — lang attribute is set
  • /schools/ — exactly one h1
  • /schools/ — page title is set
  • /schools/ — skip link reaches main
  • /site-workflow/ — lang attribute is set
  • /site-workflow/ — exactly one h1
  • /site-workflow/ — page title is set
  • /site-workflow/ — skip link reaches main
  • /more-components/ — lang attribute is set
  • /more-components/ — exactly one h1
  • /more-components/ — page title is set
  • /more-components/ — skip link reaches main
  • /audit-tools/ — lang attribute is set
  • /audit-tools/ — exactly one h1
  • /audit-tools/ — page title is set
  • /audit-tools/ — skip link reaches main
  • /audit-voiceover/ — lang attribute is set
  • /audit-voiceover/ — exactly one h1
  • /audit-voiceover/ — page title is set
  • /audit-voiceover/ — skip link reaches main
  • /audit-nvda/ — lang attribute is set
  • /audit-nvda/ — exactly one h1
  • /audit-nvda/ — page title is set
  • /audit-nvda/ — skip link reaches main
  • /audit-talkback/ — lang attribute is set
  • /audit-talkback/ — exactly one h1
  • /audit-talkback/ — page title is set
  • /audit-talkback/ — skip link reaches main
  • /model-card/ — lang attribute is set
  • /model-card/ — exactly one h1
  • /model-card/ — page title is set
  • /model-card/ — skip link reaches main
  • /models/ — lang attribute is set
  • /models/ — exactly one h1
  • /models/ — page title is set
  • /models/ — skip link reaches main
  • /who-this-helps/ — lang attribute is set
  • /who-this-helps/ — exactly one h1
  • /who-this-helps/ — page title is set
  • /who-this-helps/ — skip link reaches main
  • /typography/ — lang attribute is set
  • /typography/ — exactly one h1
  • /typography/ — page title is set
  • /typography/ — skip link reaches main
  • /design-system/ — lang attribute is set
  • /design-system/ — exactly one h1
  • /design-system/ — page title is set
  • /design-system/ — skip link reaches main
  • /accessibility-statement/ — lang attribute is set
  • /accessibility-statement/ — exactly one h1
  • /accessibility-statement/ — page title is set
  • /accessibility-statement/ — skip link reaches main
  • /ai-transparency/ — lang attribute is set
  • /ai-transparency/ — exactly one h1
  • /ai-transparency/ — page title is set
  • /ai-transparency/ — skip link reaches main
  • /a11y-audit/ — lang attribute is set
  • /a11y-audit/ — exactly one h1
  • /a11y-audit/ — page title is set
  • /a11y-audit/ — skip link reaches main
  • /security-audit/ — lang attribute is set
  • /security-audit/ — exactly one h1
  • /security-audit/ — page title is set
  • /security-audit/ — skip link reaches main
  • /privacy/ — lang attribute is set
  • /privacy/ — exactly one h1
  • /privacy/ — page title is set
  • /privacy/ — skip link reaches main
  • /accessible-pdfs/ — lang attribute is set
  • /accessible-pdfs/ — exactly one h1
  • /accessible-pdfs/ — page title is set
  • /accessible-pdfs/ — skip link reaches main
  • /accessible-tables/ — lang attribute is set
  • /accessible-tables/ — exactly one h1
  • /accessible-tables/ — page title is set
  • /accessible-tables/ — skip link reaches main
  • /accessible-charts/ — lang attribute is set
  • /accessible-charts/ — exactly one h1
  • /accessible-charts/ — page title is set
  • /accessible-charts/ — skip link reaches main
  • /accessible-images/ — lang attribute is set
  • /accessible-images/ — exactly one h1
  • /accessible-images/ — page title is set
  • /accessible-images/ — skip link reaches main
  • /accessible-videos/ — lang attribute is set
  • /accessible-videos/ — exactly one h1
  • /accessible-videos/ — page title is set
  • /accessible-videos/ — skip link reaches main
  • /accessible-tech-stack/ — lang attribute is set
  • /accessible-tech-stack/ — exactly one h1
  • /accessible-tech-stack/ — page title is set
  • /accessible-tech-stack/ — skip link reaches main
  • /tailwind-for-accessibility/ — lang attribute is set
  • /tailwind-for-accessibility/ — exactly one h1
  • /tailwind-for-accessibility/ — page title is set
  • /tailwind-for-accessibility/ — skip link reaches main
  • /reasonable-accommodations-neurodivergence/ — lang attribute is set
  • /reasonable-accommodations-neurodivergence/ — exactly one h1
  • /reasonable-accommodations-neurodivergence/ — page title is set
  • /reasonable-accommodations-neurodivergence/ — skip link reaches main
  • /accessible-accordion/ — lang attribute is set
  • /accessible-accordion/ — exactly one h1
  • /accessible-accordion/ — page title is set
  • /accessible-accordion/ — skip link reaches main
  • /accessible-tabs/ — lang attribute is set
  • /accessible-tabs/ — exactly one h1
  • /accessible-tabs/ — page title is set
  • /accessible-tabs/ — skip link reaches main
  • /accessible-dropdown/ — lang attribute is set
  • /accessible-dropdown/ — exactly one h1
  • /accessible-dropdown/ — page title is set
  • /accessible-dropdown/ — skip link reaches main
  • /reports/home-playwright/ — lang attribute is set
  • /reports/home-playwright/ — exactly one h1
  • /reports/home-playwright/ — page title is set
  • /reports/home-playwright/ — skip link reaches main
  • /reports/home-a11y-insights/ — lang attribute is set
  • /reports/home-a11y-insights/ — exactly one h1
  • /reports/home-a11y-insights/ — page title is set
  • /reports/home-a11y-insights/ — skip link reaches main
Alfa (ACT-Rules)All pass
Routes audited
32
Passed
32
Engine
@siteimprove/alfa-playwright
Duration
56.4s

W3C ACT-Rules engine. Catches semantic-structure and focus issues that axe-core misses.

Accessibility InsightsAll pass
Pages assessed
8
Total criteria
184
Passed
184
Last assessed
2026-05-23

Resolved issues

  • link-in-text-block (SC 1.4.1) — Footer links were not underlined. Fix: text-decoration: underline on .site-footer a. Fixed 2026-05-23.
  • color-contrast (SC 1.4.3) — Design system swatch labels inherited a forced color override. Fixed 2026-05-23.
  • color-contrast (SC 1.4.3) — Focus swatch amber background was 4.23:1 (below 4.5:1 AA). Redesigned as outline ring. Fixed 2026-05-23.

Screen reader results

Manual screen-reader planEvery page will be manually exercised against WCAG 2.2 AAA with NVDA + Firefox (Windows), VoiceOver + Safari (macOS & iOS), and TalkBack + Chrome (Android). Results land in the table below as each pass completes.

Manual screen-reader audits against WCAG 2.2 AAA. NVDA + Firefox (Windows), VoiceOver + Safari (macOS/iOS), and TalkBack + Chrome (Android) are run per release.

Manual screen-reader audit results. Each row is one screen-reader pass against WCAG 2.2 AAA.
Screen readerPlatformDateChecksReportStatus
VoiceOvermacOS + Safari2026-05-2443/43View reportPass
NVDAWindows + FirefoxPendingPending
TalkBackAndroid + ChromePendingPending

Report a barrier

If you encounter an accessibility barrier not listed here, contact A11y Equitas via a11yequitas.org. We aim to respond within five business days.