Screen Reader Testing — Complete Guide
In this tutorial, you will learn about Screen Reader Testing. We cover key concepts, practical examples, and best practices to help you master this topic.
Screen reader testing involves navigating a website using NVDA (Windows) or VoiceOver (Mac) to verify that content is announced correctly, headings and landmarks are navigable, dynamic updates are communicated, and the overall experience is equivalent to visual browsing.
What You'll Learn
You will test with NVDA and VoiceOver, navigate by headings and landmarks, verify form label announcements, check live region updates, and document screen reader-specific issues.
Why It Matters
Screen readers are the primary assistive technology for blind users. If your site does not work with screen readers, you exclude approximately 2 percent of the global population -- and potentially violate Accessibility laws.
Real-World Use
A user testing session reveals that a modal dialog announces its content when opened, but focus does not move into the modal. The screen reader continues reading the background page while the modal overlays it. The user cannot complete the action.
Screen Reader Test Flow
flowchart TD
A[Start Screen Reader] --> B[Navigate by Heading]
B --> C[Navigate by Landmark]
C --> D[Tab Through Interactive]
D --> E[Test Forms]
E --> F[Test Dynamic Content]
F --> G[Verify Announcements]
G --> H{Clear?}
H -->|Yes| I[Pass]
H -->|No| J[Document Issue]
Testing with NVDA and VoiceOver
Enable NVDA on Windows or VoiceOver on Mac (Cmd+F5). Use screen reader-specific navigation keys to move through content.
<!-- Screen reader test: heading structure -->
<h1>Product Catalog</h1>
<h2>Electronics</h2>
<h3>Smartphones</h3>
<h3>Laptops</h3>
<h2>Clothing</h2>
<h3>Men's</h3>
<h3>Women's</h3>
<!-- Test: Can you navigate by heading and find all sections? -->
<!-- Screen reader test: form labels -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" required>
<!-- Test: Does the screen reader announce the label when focused? -->
<div role="alert" aria-live="polite">
Error: Please enter a valid email
</div>
<!-- Test: Is the error announced when it appears? -->
// Screen reader test: live region updates
const statusEl = document.getElementById('status');
statusEl.setAttribute('aria-live', 'polite');
statusEl.textContent = 'Item added to cart';
// Test: Does the screen reader announce the cart update?
Common Mistakes
- Testing with only one screen reader
- Not testing both navigation (headings, landmarks) and interaction (forms, buttons)
- Forgetting to test dynamic content updates
- Not testing in both browse/focus modes
- Assuming screen reader behavior matches visual layout
- Ignoring unnecessary or verbose announcements
- Not testing with images disabled to simulate screen reader experience
Practice and Challenge
Practice 1: Navigate a long article by headings only using NVDA. Practice 2: Test a form with VoiceOver and verify all labels are announced. Practice 3: Identify a page section that is not reachable by landmark navigation. Practice 4: Test a modal dialog and verify focus management. Practice 5: Add an aria-live region and verify it announces updates.
Challenge: Write a screen reader testing script for a product listing page. Include: heading navigation test, landmark navigation test, product card announcement test, filter interaction test, and add-to-cart announcement test. Execute with both NVDA and VoiceOver and compare results.
FAQ
Mini Project
Record a screen reader session navigating through a checkout Process. Note the announcement for each step: cart review, shipping address, payment, and confirmation. Identify at least three announcements that are confusing or missing. Propose fixes for each.
What's Next
Color Contrast Testing covers testing color contrast ratios for accessibility.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro