Our Accessibility Audit Methodology

Exactly what we test, how we test it, and how findings are rated. No black box.

Most accessibility "audits" are an automated scan with a logo on it. A scanner can only detect roughly a third of WCAG failures — it cannot tell you whether a focus order makes sense, whether a button's name describes what it does, or whether a cart drawer is usable without a mouse.

This page documents the full process behind every AccessoraX audit, in the order we run it. It exists so you can see what you're paying for, compare us honestly against other providers, and hold us to it.

Principles We Work To

Manual first

Automated tools run first because they are fast, not because they are authoritative. Every finding a scanner reports is confirmed by hand before it reaches your report.

Test the journey, not the page

A page can pass in isolation and still block a purchase. We test complete paths: find a product, choose a variant, add to cart, check out.

Reproducible

Every finding includes the page, the element, the steps to reproduce it and the assistive technology used. You should be able to see it yourself.

Honest about limits

No audit finds 100% of issues, and no vendor can promise you won't be sued. We tell you what we tested and what we didn't.

Phase 1 — Scoping and Page Selection

Testing every URL on a 400-product store is neither possible nor useful, because most product pages are the same template rendered with different data. We test templates and journeys.

A standard scope covers:

We ask for one thing before starting: your best-selling product and your highest-traffic collection. Those get tested first, because a barrier there costs you the most.

Phase 2 — Automated Testing

Automated scanning is the first pass. It is good at finding machine-detectable failures at volume: missing alt attributes, empty links, contrast ratios, duplicate IDs, missing form labels.

Automated tools used and what each contributes
ToolWhat it contributes
axe DevToolsRule-based WCAG checks with low false-positive rate
WAVEVisual overlay showing where issues sit on the page
LighthouseBaseline score and performance context
HTML validatorMalformed markup that breaks assistive technology
Contrast analysersPrecise ratio measurement, including text over images

What automation cannot do. It cannot judge whether alt text is accurate, only whether it exists. It cannot tell you a focus order is illogical, only that elements are focusable. It cannot detect a keyboard trap that requires three interactions to reach. Roughly 30–40% of WCAG 2.1 AA criteria are machine-testable. The rest is the work below.

Phase 3 — Keyboard-Only Testing

The mouse is put away. Every task a customer needs to complete is attempted using only Tab, Shift+Tab, Enter, Space, Escape and the arrow keys.

What we check on every interactive element

Journeys tested by keyboard alone

Browse and buy

  • Navigate from homepage to a product via the menu
  • Apply and clear a collection filter
  • Select size and colour variants
  • Add to cart and reach checkout

Recover and correct

  • Change a quantity, then remove an item
  • Apply an invalid discount code
  • Submit a form with a deliberate error
  • Dismiss every modal and overlay

Phase 4 — Screen Reader Testing

Keyboard testing proves a control can be reached. Screen reader testing proves it makes sense when announced. A button you can Tab to that says "button, blank" is still unusable.

Screen reader and browser pairings used in testing
Screen readerBrowserWhy this pairing
NVDAChrome and Firefox on WindowsMost widely used free screen reader; the common desktop baseline
VoiceOverSafari on macOSBehaves differently from NVDA, particularly with ARIA and tables
VoiceOverSafari on iOSTouch gestures differ entirely from desktop navigation

We test with more than one because they disagree. A pattern that announces correctly in NVDA can be silent in VoiceOver, and vice versa. Testing one and declaring compliance is a common shortcut we don't take.

What we listen for

We record the actual announcement text for key controls and include it in the report. Reading "Add to cart, button" versus "clickable" is more persuasive to a stakeholder than any severity rating.

Phase 5 — Visual, Zoom and Reflow Testing

Colour contrast

Measured, not eyeballed. Body text must reach 4.5:1, large text 3:1, and interface components and focus indicators 3:1 against adjacent colours. We check the states people forget: hover, focus, disabled, placeholder text, text over hero images, and text on brand-coloured buttons.

Use of colour

Colour must never be the only way information is conveyed. Sale prices, stock status, required fields, form errors and selected variants are all checked for a non-colour cue.

Zoom and reflow

Text spacing (1.4.12)

Line height, letter and word spacing increased. Nothing may clip or overlap.

Reflow (1.4.10)

Content at 320px width with no horizontal scrolling, and at 400% browser zoom.

Text resize (1.4.4)

Text scaled to 200% without loss of content or function.

Orientation and targets

Portrait and landscape both usable; touch targets at least 24×24px, with 44×44px recommended.

Motion

Carousels, parallax and animated banners are checked for a pause control and for whether they respect prefers-reduced-motion. Anything that flashes more than three times per second is flagged immediately as a seizure risk.

Phase 6 — Component-Level Testing

This is where most Shopify-specific failures live. Each component is tested as an interactive unit, not just scanned as markup.

Forms

Product cards and collection grids

Filters, sorting and search

Cart drawer

The single most common point of failure we find. Tested against four requirements:

  1. Focus moves into the drawer when it opens
  2. Focus stays inside while it is open
  3. Escape closes it
  4. Focus returns to the trigger on close

We also check that it is marked up as a dialog with an accessible name, that quantity and remove controls identify which product they act on, and that subtotal changes are announced through a live region.

Dynamic content and ARIA

Anything that changes without a page load is checked for whether the change is perceivable non-visually: cart updates, filter results, form validation, live inventory, countdown timers.

How we treat ARIA

ARIA is assessed against the first rule of ARIA: don't use it if native HTML can do the job. A <button> beats a <div role="button"> every time. We flag ARIA that is redundant, contradictory, points at missing IDs, or hides content that should be available. Incorrect ARIA is worse than none — it actively misinforms.

Phase 7 — Third-Party Apps and Checkout Boundaries

Third-party apps account for a large share of the violations we find, and they are the part store owners are least aware of. Each installed app that renders customer-facing markup is tested individually.

Common categories audited: reviews, popups and email capture, live chat, upsell and bundling, filters and search, cookie consent, loyalty widgets, and any accessibility overlay.

Checkout boundaries — what we can and cannot change

Shopify controls the checkout page itself. On plans below Shopify Plus, checkout.liquid cannot be edited, and we will not claim otherwise.

What we can audit and fix: the cart drawer, cart page, express checkout buttons, checkout extensions and apps, and every step leading to checkout. In our experience that is where the failures actually are — customers rarely reach Shopify's checkout because they get stuck before it.

Where a genuine barrier sits inside Shopify's own checkout, we document it, report it to Shopify, and record it in your report as a known limitation outside your control. That documentation matters if you are ever challenged.

Phase 8 — WCAG Mapping and Severity Classification

Every finding is mapped to a specific WCAG 2.1 or 2.2 success criterion by number and level. "This looks wrong" is not a finding. "1.3.1 Info and Relationships (Level A) — the shipping options are not grouped in a fieldset, so the question is not announced" is.

Severity is impact, not tidiness

Severity reflects how much the issue blocks a real person, and how exposed it leaves you legally. It is not a measure of how hard it is to fix.

Severity levels and what they mean
SeverityMeaningExampleTarget
Critical Blocks a core task outright. No workaround exists. Checkout cannot be completed by keyboard Immediately
High Blocks a task for a specific group, or a workaround exists but is unreasonable. Variant swatches have no text labels Within 2 weeks
Medium Task is possible but significantly harder or slower. Heading order skips levels Within 1–3 months
Low Minor friction, or best practice beyond the AA requirement. Link text could be more descriptive Next redesign

Where a single root cause produces many instances — one bad snippet rendering across 300 products — it is reported once, with the instance count. Padding a report with 300 line items makes it look thorough and makes it useless.

Phase 9 — Reporting

Every finding in your report contains:

Reports also include a prioritised remediation order, an estimate of effort, and a plain-English summary for stakeholders who won't read the technical detail.

Phase 10 — Remediation and Retesting

An audit that ends at the report is half a job. After fixes are implemented — by us or by your team — we retest.

  1. Verify each fix using the same method that found the issue. A keyboard failure is retested by keyboard, not by scanner.
  2. Regression check the surrounding area. Fixes break things; focus management in one modal often affects others.
  3. Re-run the full automated pass to catch anything introduced during remediation.
  4. Re-walk the core journeys end to end, since components pass individually and still fail in sequence.
  5. Issue a verification record stating what was fixed, when, how it was confirmed, and what remains open.

Accessibility is not a one-time state. Adding products, installing apps and updating themes all introduce new issues. We recommend retesting quarterly, and after any theme change or app installation.

What This Method Does Not Cover

Every vendor should publish this section and almost none do.

  • No audit finds every issue. Expert manual review typically surfaces the large majority of barriers, not all of them. Anyone promising 100% is selling something.
  • We are not a law firm. We can reduce risk and document your efforts. We cannot guarantee immunity from claims, and no accessibility vendor can.
  • We test templates, not every URL. A product page with unusual custom content may behave differently from the template we tested. Tell us about anything unusual and we'll include it.
  • Shopify's checkout is outside our control on non-Plus plans, as described above.
  • We do not run usability studies with disabled participants. Testing with assistive technology is not the same as testing with people who depend on it daily. For higher assurance, we can help you arrange that separately.
  • Compliance is a moving target. WCAG 2.2 added criteria; a store audited against 2.1 may have gaps against 2.2.

Standards We Test Against

For the detail of what these require, see our WCAG 2.1 requirements guide and our Shopify WCAG checklist.

See this methodology applied to your store

We'll run the first stages of this process on your homepage and send back a recorded walkthrough showing exactly where a customer would get stuck. Free, and there's no pitch attached.

Request your free audit

Where This Methodology Applies

This is the process behind every engagement: