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.

case-study.json, excerptDemo store, fictional
{
  "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"
  }
}
The demo store’s results, before and after fixes: 3 templates in 8 page states at 1280 and 390 px. Every page on this site quotes this one run.

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.

  1. Import the findings

    Your audit or our Review, mapped to a triage sheet: page, criterion, severity, file.

    audit-import
  2. Scan before

    Every affected template at 1280 and 375 px, WCAG 2.2 AA rules.

    a11y-check
  3. Fix on staging

    Theme code on a duplicate theme or a branch. Never the live store.

    git / theme copy
  4. Scan after and diff

    Fixed, still failing or new, per page, viewport and rule, mapped to issue IDs.

    a11y-diff
  5. Test by hand

    Keyboard only, VoiceOver, NVDA, 400% zoom and reflow, contrast in every state.

    People, not tools
  6. Report

    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.”

WCAG 2.2, Success Criterion 2.1.1 Keyboard (Level A). W3C

WebAIM notes that automated tools cannot detect every WCAG failure, so a page with no detected errors is not necessarily accessible.

WebAIM Million 2026 (Methodology), February 2026. WebAIM
  • 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.