Testing Websites with NVDA, JAWS, and VoiceOver
Ensuring web accessibility across different screen readers requires a structured testing strategy that combines automated scanning, keyboard-only validation, and manual screen reader audits. Web engineers evaluate assistive technology compatibility by pairing specific screen readers with their primary browsers, navigating digital interfaces using keyboard shortcuts, and verifying that semantic HTML correctly conveys context, dynamic updates, and interactive elements.
Standard Screen Reader and Browser Pairings
Screen readers do not parse web pages in isolation; they interpret the Accessibility Tree constructed by the browser's rendering engine. Because different screen readers integrate best with specific rendering engines, engineers test using standard industry pairings:
- NVDA (NonVisual Desktop Access): Tested primarily with Mozilla Firefox and Google Chrome on Windows. It is open-source and widely used for rapid developer feedback.
- JAWS (Job Access With Speech): Tested with Google Chrome and Microsoft Edge on Windows. It is the enterprise standard among blind and low-vision users.
- VoiceOver: Tested with Apple Safari on macOS and iOS. VoiceOver relies deeply on WebKit’s implementation of the accessibility API.
- TalkBack: Tested with Google Chrome on Android devices to cover mobile accessibility alongside VoiceOver.
Testing outside these standard pairings often introduces engine-specific quirks that do not represent real-world user configurations.
The Testing Workflow
Engineers use a tiered workflow to detect issues early and reserve time-intensive manual screen reader testing for interactive components.
1. Automated Analysis
Before launching a screen reader, engineers run automated rule checkers such as Axe-core, Lighthouse, or browser accessibility trees. These tools quickly detect fundamental issues like missing form labels, invalid ARIA attributes, missing image alt text, and low contrast ratios. Automation handles roughly 30% to 50% of basic accessibility issues.
2. Keyboard-Only Navigation
Screen reader users navigate almost exclusively through keyboards or hardware switches. Engineers verify functionality without a mouse by checking:
- Focus Order: The tab order follows a logical reading sequence.
- Focus Visibility: Every interactive control has a clearly visible focus indicator.
- Operation: Interactive controls (buttons, links,
dropdowns, inputs) can be triggered using standard keys like
Tab,Shift + Tab,Enter,Space, and arrow keys. - Focus Traps: Modals and dialogs trap keyboard focus within the dialog until dismissed, returning focus to the trigger element upon closing.
3. Structural and Semantic Verification
Using screen reader shortcuts, engineers inspect the page structure via "Elements Lists" or the "Rotor" (VoiceOver). Screen reader users rarely read a page linearly from top to bottom; instead, they skim by structural cues.
- Heading Structure: Engineers pull up the headings
list (e.g.,
Insert + F7in NVDA,VO + Uin VoiceOver) to verify a singleh1and a logical nested hierarchy (h2throughh6) without skipping levels. - Landmarks: Structural regions
(
<main>,<nav>,<header>,<footer>) are verified so users can jump directly between sections. - Form Controls: Form inputs must announce their programmatic labels, required states, and error messages rather than relying on placeholder text.
4. Dynamic Content and State Management
Single Page Applications (SPAs) and dynamic components require manual auditory verification. Engineers ensure:
- Live Announcements: Asynchronous updates (like
toast notifications or shopping cart updates) are announced accurately
without interrupting user actions, typically verified via
aria-live="polite"oraria-live="assertive". - Component State Changes: Expandable components
(accordions, disclosure menus) properly announce their
expanded/collapsed state via
aria-expanded. - Route Changes: In SPAs, page transitions must programmatically move focus to the primary content area or a new heading so the screen reader announces the new context.
Best Practices for Engineers
- Rely on Native HTML First: Native elements
(
<button>,<select>,<input>) come with built-in accessibility semantics, focus management, and keyboard handling across all screen readers. ARIA is only introduced when native elements cannot fulfill the design requirement. - Test on Real Operating Systems: While emulators and virtual machines work for basic testing, mobile gestures on VoiceOver (iOS) and TalkBack (Android) must be evaluated on physical devices to test swipe and touch-exploration behaviors accurately.
- Use Visual Display Tools: Tools like the Speech Viewer in NVDA or Speech History in VoiceOver output spoken text to an on-screen log, allowing developers to visually read what assistive technology is announcing without relying solely on audio.