1. Why Manual Screen Reader Testing Matters
Screen readers convert visual content to synthesized speech or Braille output for blind and visually impaired users. They read the underlying HTML structure, not the visual layout. This means your store can look perfect visually while being completely unusable to screen reader users if the HTML lacks proper semantics, labels, and ARIA attributes.
What Automated Tools Miss
Automated accessibility scanners like Lighthouse, WAVE, and axe can detect whether an image has alt text, but they cannot evaluate whether that alt text is actually descriptive and useful. They can verify that a form field has a label, but they cannot tell if that label makes sense in context. They cannot assess whether the tab order flows logically through your page, whether dynamic content changes are announced, or whether the overall experience of navigating your store by audio alone is coherent. These qualitative aspects of accessibility can only be evaluated by a human using a screen reader.
According to the WebAIM Million study, automated tools detect an average of 56.8 accessibility errors per homepage, but manual testing reveals 2-3x more issues that automated tools miss entirely. For ecommerce stores with complex product pages, filters, modals, and checkout flows, the gap is even larger. The combination of automated pre-screening followed by manual screen reader testing provides the most comprehensive coverage.
Legal and Business Implications
Over 4,000 ADA web accessibility lawsuits were filed in 2025, with ecommerce being the most targeted category. Courts increasingly expect evidence of screen reader testing as part of accessibility compliance. Beyond legal risk, 71% of screen reader users report leaving inaccessible websites immediately. With 8.1 million Americans using screen readers, an inaccessible Shopify store excludes a significant and affluent customer segment. Installing EA Accessibility addresses many common issues automatically, but manual testing ensures comprehensive coverage.
2. VoiceOver Testing Workflow (Mac/iOS)
VoiceOver is Apple's built-in screen reader, available on every Mac, iPhone, and iPad at no cost. It is the easiest screen reader to learn and is used by 36% of screen reader users, making it an essential testing tool. VoiceOver works best with Safari.
Getting Started with VoiceOver on Mac
- Enable: Press
Cmd + F5to toggle VoiceOver on/off. Alternatively, go to System Settings > Accessibility > VoiceOver. - VoiceOver key (VO): The VO modifier is
Control + Optionby default. Most VoiceOver commands use VO + another key. - Navigate by element:
VO + Right Arrowmoves to the next element,VO + Left Arrowmoves to the previous element. - Navigate by heading:
VO + Cmd + Hjumps to the next heading. This is how screen reader users scan pages. - Navigate by link:
VO + Cmd + Ljumps to the next link. - Activate element:
VO + Spaceactivates the focused element (clicks a button or link). - Read page:
VO + Areads the entire page from the current position. - Open rotor:
VO + Uopens the Rotor, which lists all headings, links, form controls, and landmarks on the page.
VoiceOver Testing Steps for Shopify
Open your Shopify store in Safari with VoiceOver enabled. Start at the top of the homepage and navigate element by element using VO + Right Arrow. Listen for the following on each page type:
- Homepage: Does the page title announce correctly? Can you navigate to the main content quickly? Are promotional banners, featured products, and navigation links properly labeled?
- Collection page: Are product cards announced with name, price, and link? Can you filter and sort products? Are filter changes announced?
- Product page: Are product images described? Is the price announced correctly (dollars and cents, not digit by digit)? Can you select variants (size, color) and add to cart? Is the add-to-cart confirmation announced?
- Cart page: Can you update quantities and remove items? Are price totals announced after changes?
VoiceOver on iOS
Enable VoiceOver on iPhone via Settings > Accessibility > VoiceOver, or triple-click the side button if configured. Gestures: swipe right to move to the next element, swipe left for previous, double-tap to activate. Testing on iOS is important because mobile represents 65-70% of Shopify traffic and iOS is the dominant mobile platform in many markets.
3. NVDA Testing Workflow (Windows)
NVDA (NonVisual Desktop Access) is a free, open-source screen reader for Windows used by 30% of screen reader users. It works best with Firefox and Chrome. Download it from nvaccess.org.
Essential NVDA Commands
| Action | Keyboard Shortcut | Description |
|---|---|---|
| Start/Stop NVDA | Ctrl + Alt + N | Toggle NVDA on and off |
| Stop speaking | Ctrl | Silence current speech |
| Next element | Down Arrow (browse mode) | Move to next item on page |
| Next heading | H | Jump to next heading |
| Heading level | 1-6 | Jump to next heading of that level |
| Next link | K | Jump to next link |
| Next form field | F | Jump to next form element |
| Next landmark | D | Jump to next ARIA landmark |
| Elements list | NVDA + F7 | List all links, headings, or landmarks |
| Toggle browse/focus mode | NVDA + Space | Switch between navigation modes |
NVDA Browse Mode vs. Focus Mode
NVDA has two navigation modes that you need to understand. Browse mode (default) lets you navigate the page using single-key shortcuts (H for heading, K for link, etc.). Focus mode activates when you enter a form field and lets you type text. NVDA automatically switches between modes in most cases, but if you find yourself unable to navigate with single-key shortcuts, press NVDA + Space to toggle back to browse mode. Understanding this distinction prevents the most common NVDA testing frustration.
NVDA Testing Process
Open your store in Firefox with NVDA running. Press NVDA + F7 to open the Elements List, then check the Headings tab. Your page should show a logical heading hierarchy starting with one H1 and cascading through H2 and H3 levels. If headings are missing, out of order, or used for visual styling rather than structure, screen reader users cannot efficiently scan your page. Navigate through product pages using the F key to jump between form fields — ensure every variant selector, quantity input, and the add-to-cart button is reachable and properly labeled.
4. JAWS Testing Workflow (Windows)
JAWS (Job Access With Speech) is the most widely used screen reader at 40% market share, primarily in corporate and enterprise environments. It costs $95/year for a Home license or $1,000+ for a Professional license. Freedom Scientific offers a free 40-minute trial mode that restarts after rebooting. JAWS works best with Chrome and Edge.
Key JAWS Commands
JAWS uses many of the same navigation shortcuts as NVDA in browse mode. Press H for next heading, T for next table, F for next form field, and Enter to activate links and buttons. The JAWS key (Insert) replaces the NVDA key for modifier commands. Press Insert + F6 to list all headings, Insert + F7 for links, and Insert + F5 for form fields.
JAWS Virtual Cursor
JAWS uses a "virtual cursor" that moves through the page content independently of the visual focus. When testing forms, press Enter on a form field to switch to "forms mode" (similar to NVDA's focus mode). JAWS announces "forms mode on" when you enter a form field. If form fields are not properly labeled, JAWS will announce "edit" or "combo box" without context, making it impossible for the user to know what information to enter. Test every form on your Shopify store to ensure labels are announced.
5. Common Issues & Fixes
After testing hundreds of Shopify stores, these are the accessibility issues that appear most frequently and have the greatest impact on screen reader usability.
Missing or Unhelpful Alt Text
Issue: Product images announce as "image" or "IMG_4521.jpg" instead of describing the product. Screen reader users hear meaningless announcements for every image on the page.
Fix: Add descriptive alt text in Shopify admin (Products > Edit product > Click image > Add alt text). Write: "Women's organic cotton V-neck t-shirt in navy blue, front view." Not: "product image" or "t-shirt." For decorative images that add no information, use empty alt text (alt="") so screen readers skip them entirely.
Unlabeled Form Fields
Issue: The search bar, email signup fields, and variant selectors (size, color) lack associated <label> elements or aria-label attributes. Screen readers announce "edit" with no context.
Fix: Add a visible <label> element with a for attribute matching the input's id. If a visible label is not possible in the design, add aria-label="Search products" directly to the input element. EA Accessibility automatically adds proper ARIA labels to common Shopify form elements that are missing them.
Broken Heading Hierarchy
Issue: Pages skip from H1 to H3, use multiple H1 tags, or use heading tags for visual styling (large bold text that is not actually a heading). Screen reader users navigate by headings, so broken hierarchy makes the page structure incomprehensible.
Fix: Each page should have exactly one H1 (the page title or product name). Sections use H2, subsections use H3. Never skip levels. If you need large styled text that is not a heading, use CSS classes instead of heading tags. Many Shopify themes misuse headings in sidebar widgets and footer sections.
Inaccessible Navigation Dropdowns
Issue: Navigation menus with dropdowns that only appear on mouse hover cannot be activated by keyboard or screen reader. Entire product categories become unreachable.
Fix: Ensure dropdown menus open with Enter or Space key and close with Escape. Dropdown items should be navigable with Arrow keys. Add aria-expanded="true/false" to toggle buttons and aria-haspopup="true" to menu triggers. EA Accessibility adds keyboard navigation to common menu patterns.
Dynamic Content Not Announced
Issue: When a customer clicks "Add to Cart," the cart icon updates visually but the screen reader announces nothing. The customer does not know if their action succeeded. Same issue with filter updates, quantity changes, and search results.
Fix: Add aria-live="polite" to regions that update dynamically. When the cart updates, inject text like "Product added to cart. Cart total: 3 items" into the live region. For product filters, announce "Showing 24 of 150 products" after filtering. The polite value waits for the screen reader to finish its current announcement before reading the update.
| Issue | Impact Level | Fix Difficulty | EA Accessibility Fixes? |
|---|---|---|---|
| Missing alt text | High | Easy (Shopify admin) | No (requires manual content) |
| Unlabeled forms | High | Medium (code edit) | Yes (auto-adds ARIA labels) |
| Heading hierarchy | Medium | Medium (theme edit) | Partial |
| Keyboard navigation | Critical | Hard (JavaScript) | Yes (keyboard nav support) |
| Dynamic announcements | High | Hard (JavaScript) | Yes (aria-live regions) |
6. Testing the Ecommerce Flow
The most critical screen reader test is navigating the complete purchase flow: finding a product, reading its details, selecting variants, adding to cart, and proceeding to checkout. If any step in this flow is broken, the customer cannot buy from you.
Product Discovery
Test your search function by focusing on the search input, typing a product name, and navigating the results. Autocomplete suggestions should be announced as they appear. Collection page filters must be operable via keyboard — test each filter type (color swatches, size buttons, price sliders, checkbox filters). After applying a filter, verify the screen reader announces the updated product count.
Product Page Interaction
On the product page, navigate to each element and verify announcements. The product title (H1) should be the first heading announced. Price should read as a dollar amount ("forty-nine dollars and ninety-nine cents"), not individual digits. Sale prices should announce both original and discounted prices with context. Variant selectors (size and color) should announce the option name, current selection, and available options. The add-to-cart button should be clearly labeled and its result announced.
Cart and Checkout
In the cart, verify you can update quantities using the +/- buttons or input field, and that the updated total is announced. The remove button should announce which product will be removed. Shopify's native checkout has generally good accessibility, but test error handling: leave a required field empty and submit to verify the error message is announced and focus moves to the problematic field.
7. Automated Testing Tools
Use automated tools for initial scanning before manual testing. They quickly identify the low-hanging fruit so your manual testing time is spent on deeper issues.
Recommended Tools
- axe DevTools (free browser extension): The most accurate automated scanner. Identifies issues with a very low false-positive rate. Run it on every page template (homepage, collection, product, cart).
- WAVE (wave.webaim.org): Visual overlay showing errors, alerts, and structural elements. Excellent for quickly seeing which elements have issues.
- Google Lighthouse (built into Chrome DevTools): Accessibility audit as part of the Lighthouse report. Quick but less detailed than axe.
- Accessibility Insights for Web (Microsoft): Guided manual testing workflows combined with automated scanning. Excellent for structured audits.
- Pa11y (command-line tool): Automated testing you can integrate into your development workflow for continuous monitoring.
8. Testing Schedule & Checklist
Accessibility is not a one-time project. Theme updates, new app installations, and content changes can introduce regressions at any time. Establish a regular testing schedule to maintain compliance.
Quarterly Full Audit
Every quarter, run a complete screen reader audit covering all page templates and the full purchase flow. This takes 2-3 hours after the initial audit. Document findings in a spreadsheet tracking issue, location, severity, fix status, and responsible person. Prioritize fixes by impact: anything that prevents completing a purchase is critical, anything that degrades navigation is high, and anything that reduces information quality is medium.
Event-Triggered Testing
Perform a focused screen reader test whenever you: install or update a Shopify app, change your theme or customize theme settings, add new product templates or page layouts, or make significant content changes. Focus testing on the areas affected by the change rather than a full audit. Five minutes of testing after each change prevents accessibility regressions from accumulating.
Testing Checklist Summary
- Every page has exactly one H1 with logical H2/H3 hierarchy below it
- All product images have descriptive alt text
- All form fields have associated labels announced by screen readers
- Navigation menu is fully operable by keyboard and screen reader
- Add-to-cart action is announced with confirmation
- Cart quantity changes are announced with updated totals
- Search results are navigable and announced
- Filter changes announce updated product counts
- Modal popups trap focus and can be closed with Escape
- Error messages are announced and focus moves to the error
- Prices read as currency amounts, not individual digits
- Skip-to-content link is present and functional
Frequently Asked Questions
Which screen reader should I use to test my Shopify store?
Test with at least two: VoiceOver (free on Mac/iOS, 36% market share) and NVDA (free on Windows, 30% market share). VoiceOver is the easiest to learn. For the most thorough coverage, add JAWS testing on Chrome. Each screen reader and browser combination reveals different issues.
How long does screen reader testing take?
A thorough initial audit takes 4-8 hours. Subsequent quarterly audits take 2-3 hours. If you are new to screen readers, add 2-3 hours of learning time. Automated tools can pre-scan for 30-50% of issues in minutes, reducing manual testing time significantly.
What are the most common screen reader issues on Shopify?
The five most common: missing alt text on product images, unlabeled form fields, broken heading hierarchy, inaccessible dropdown menus, and dynamic content not announced (add-to-cart, filter changes, cart updates). EA Accessibility fixes several of these automatically.
Does Shopify checkout need separate testing?
Shopify's native checkout has generally good accessibility. However, checkout extensibility apps and custom scripts can introduce issues. On Shopify Plus stores with checkout customizations, thorough testing is essential. Always test error handling — invalid input errors must be announced by screen readers.
Can I automate screen reader testing?
Automated tools catch 30-50% of issues (missing alt text, contrast, missing labels, heading problems). They cannot evaluate alt text quality, logical tab order, dynamic content announcements, or overall audio navigation experience. Use automated scanning first, then manual screen reader testing for critical flows.