Accessibility
Our goal with accessibility testing is to ensure that a website is accessible and usable by all users. This includes auditing issues that arise with third-party viewing aids (like screen readers) and things those tools may not catch (like contrast and font size).
Standards
Our baseline commitment is WCAG 2.2 AA and Section 508 compliance on every project. Clients will know if they require more stringent standards (e.g., WCAG AAA) — when that's the case, scope it explicitly in the project agreement.
Testing Tools
Automated tests find a lot, but they don't catch everything — especially content-related issues. Use a combination of automated and manual testing on every audit.
Accessibility Insights
A browser extension from Microsoft. Runs WCAG 2.2 AA checks by default. Use it for a quick automated sweep before doing manual checks.
WAVE
Available as a Chrome and Firefox extension. Evaluates web content for accessibility issues directly in the browser, with inline visual feedback.
Pa11y
A command-line accessibility testing tool.
# Install
npm i -g pa11y
# Test a page against both standards
pa11y --standard Section508 --standard WCAG2AA https://example.com
Koa11y
A GUI wrapper around Pa11y for those who prefer not to use the CLI. Download and move to ~/Applications, then enter a URL and click "Run."
Screen Readers
Test across browser/screen reader combinations:
| Screen Reader | Browser |
|---|---|
| VoiceOver | Safari (macOS/iOS) |
| NVDA | Firefox |
| JAWS | Internet Explorer or Edge |
Color Contrast Checker
Goal: pass both AA (minimum) and AAA (desired). Use any WCAG-compliant contrast checker to evaluate foreground/background color pairs.
Keyboard Testing
Goal: full keyboard navigability with no focus trapping.
- Navigate the entire page using only the keyboard
- Confirm
Taborder is logical and matches visual reading order - Confirm arrow keys work for interactive widgets (menus, sliders, etc.)
- Confirm focus is never trapped in a component without an escape path
- Verify
tabindexvalues are set correctly (prefertabindex="0"over positive values)
Audit Definition of Done
Before closing an accessibility audit, confirm all of the following:
- Page passes Pa11y/Koa11y against WCAG 2.2 AA and Section 508
- Page passes initial scan with Accessibility Insights or WAVE
- Page is fully navigable by keyboard only
- Tab order is logical and correct
- Arrow key navigation works as expected on interactive elements
- A screen reader can read all meaningful content (VoiceOver on Mac, NVDA on PC)
- Brand and site colors pass the color contrast checker (AA minimum, AAA desired)
- JavaScript-heavy elements degrade gracefully without JS
- Page is usable when zoomed in or out
Logging Audit Results
Log every finding with the following information:
Page Title:
Page URL:
Type of noncompliance: [Screen Reader Issue, Navigation Issue, Color Contrast Issue, etc.]
Recommendation to fix: [short synopsis of how to fix the issue]
(Optional, Internal Use Only) Hourly/point estimate to fix:
Common WordPress Accessibility Pitfalls
Block patterns and the block editor
Core blocks are generally accessible, but custom block patterns frequently introduce issues:
- Hardcoded colors in patterns may override theme contrast settings — always use theme color tokens, not fixed hex values
- Image blocks in patterns often ship without alt text; the pattern itself can't provide it, so ensure the editor prompt and documentation make alt text a required step for content editors
- Decorative images (spacers, dividers, purely visual graphics) must be marked as decorative (
alt="") to be skipped by screen readers