How we test Scanned, diffed, then tested by hand
Every template we touch is scanned before and after, at desktop and mobile widths, against WCAG 2.2 AA rules (axe-core engine), and the results are diffed and mapped to your issue IDs. Automated scanning is paired with manual keyboard, screen reader (VoiceOver, NVDA) and 400% zoom testing, because automated tools catch only part of WCAG.
{
"tool": "axe-core 4.14.0 via @axe-core/playwright",
"scans": 16,
"axeBefore": {
"rulesViolated": 12,
"affectedElements": 659
},
"axeAfter": {
"rulesViolated": 0,
"affectedElements": 0
},
"automatedVsManual": {
"flaggedByAxe": 13,
"foundOnlyByManualTesting": 17
},
"retestChecks": {
"before": 0,
"after": 30,
"total": 30
},
"keyboardTask": {
"before": "fail",
"after": "pass"
}
}Scans find less than half the story
On our demo store, the automated scan flagged 13 of the 30 issues in the mock review. The other 17 only showed up when someone used the store with a keyboard and a screen reader.
- Scans are good atMissing names, alt text, labels, page language, contrast of plain text, zoom being disabled.
- People findFocus that disappears, menus that open on hover only, carousels without a pause, drawers that trap or lose focus, silent add-to-cart, swatches and sizes that can’t be reached.
The pipeline every fix goes through
Same steps on every job, so the evidence lines up with your issue IDs.
Import the findings
Your audit or our Review, mapped to a triage sheet: page, criterion, severity, file.
audit-importScan before
Every affected template at 1280 and 375 px, WCAG 2.2 AA rules.
a11y-checkFix on staging
Theme code on a duplicate theme or a branch. Never the live store.
git / theme copyScan after and diff
Fixed, still failing or new, per page, viewport and rule, mapped to issue IDs.
a11y-diffTest by hand
Keyboard only, VoiceOver, NVDA, 400% zoom and reflow, contrast in every state.
People, not toolsReport
A before/after row for every issue ID, with recordings of key tasks.
change-log.csv
The checklist every changed template passes
Run on the duplicate theme or staging site, before you see anything.
Keyboard only
- Skip link appears on the first Tab and moves to the main content
- Every control reachable with Tab and Shift+Tab, in a logical order
- Focus always visible, never hidden behind a sticky header or cookie bar
- Menus and drawers open with Enter or Space, close with Escape, and return focus
- No keyboard trap anywhere; carousels can be paused
- Variant pickers, quantity, add to cart, search and forms all operable
Screen readers: VoiceOver and NVDA
- Landmarks present and one h1, with no skipped heading levels
- Every link and button announces a clear name
- Fields announce their label, required state and errors
- Dialogs announce as a dialog with a name
- “Added to cart”, filter results and errors are announced
- Expand and collapse controls announce their state
Zoom, contrast, regression
- 400% zoom at 1280 px: one column, no sideways scrolling
- Text spacing increased: nothing clipped
- Text 4.5:1, controls and focus indicators 3:1, in every state
- Targets at least 24 × 24 px or spaced apart
- Home → collection → product → add to cart → checkout entry, at desktop and mobile
- No new console errors on changed pages
The standards we test against
“All functionality of the content is operable through a keyboard interface.”
WebAIM notes that automated tools cannot detect every WCAG failure, so a page with no detected errors is not necessarily accessible.
- WCAG 2.2Level AA, which covers 2.1 AA
- WAI-ARIAAuthoring Practices patterns
- axe-coreWCAG 2.0–2.2 A and AA rules
- VoiceOvermacOS and iOS
- NVDAWindows
- ISO/IEC 40500:2025WCAG 2.2 as an ISO standard
What you can inspect
Everything below exists for our demo store today. Review + Fix clients get the same set for their own templates.
- The raw diff reportPer page, viewport and rule. Here’s the format, from a separate, smaller run on the demo store (3 templates at 1280 and 375 px): regression-diff report (HTML, 21 KB)
- The change logOne entry per issue ID: criterion, files, change, how it was verified. Read the demo’s change log
- Recordings of key tasksKeyboard-only add to cart, captioned. Watch it in the case study
- Screen reader notesWhat was announced before and after, step by step.
Put your templates through it
Book a Review with full manual testing. Fixed price, credited in full toward Review + Fix within 30 days.