HTML Academy · Lesson

Testing with Screen Readers

Use VoiceOver and NVDA to verify ARIA implementations.

Lesson 4 of 413 steps

Testing with Screen Readers is a free HTML Academy lesson on CoddyKit. This is lesson 4 of 4. Any 3 lessons of this learning path are free to read in full — after that, CoddyKit PRO unlocks every lesson, plus hands-on practice with a built-in code editor and a 24/7 AI tutor. It is part of the HTML Academy learning path, and your progress syncs across the web and the CoddyKit app. The HTML Academy course includes 4 lessons in total.

Why Test with Screen Readers?

Automated tools catch only 30-40% of accessibility issues. Real screen reader testing reveals problems automated checks miss:

  • Confusing reading order
  • Unhelpful ARIA announcements
  • Missing focus management
  • Confusing interactive patterns

VoiceOver on Mac

VoiceOver is built into macOS — no install needed:

<!-- Activate: Cmd+F5 (or System Settings → Accessibility → VoiceOver) -->

<!-- Key commands:
  VO = Control+Option
  VO+Right Arrow = Next element
  VO+Left Arrow = Previous element
  VO+Space = Activate element
  VO+U = Open rotor (landmark navigation)
  VO+H = Next heading
  Tab = Next focusable element
  Shift+Tab = Previous focusable
-->

VoiceOver on iOS

Test mobile screen reader experience with VoiceOver on iPhone/iPad:

<!-- Activate: Settings → Accessibility → VoiceOver
     Or: triple-click side button if set up -->

<!-- Gestures:
  Swipe right = next element
  Swipe left = previous element
  Double-tap = activate element
  Two-finger scrub = back
  Three-finger swipe up/down = scroll
-->

NVDA on Windows

NVDA is a free, open-source screen reader for Windows:

<!-- Download: nvaccess.org -->

<!-- Key commands:
  NVDA key = Insert (or Caps Lock)
  NVDA+N = NVDA menu
  H = next heading
  K = next link
  B = next button
  F = next form field
  D = next landmark
  Insert+F7 = element list (links, headings, landmarks)
-->

Screen Reader Testing Checklist

What to verify with a screen reader:

  • Page title is announced on load
  • Headings create logical navigation structure
  • All images have meaningful or empty alt text
  • All form fields have labels
  • Buttons and links have descriptive names
  • Modal focus trap works correctly
  • Dynamic content updates are announced

Common Screen Reader Bugs

Issues that automated tests miss:

<!-- 1. Reading order differs from visual order -->
<!-- CSS flex/grid order ≠ DOM order for screen readers -->

<!-- 2. aria-label doesn't match visible text -->
<!-- Voice control users say visible text to click -->

<!-- 3. Focus disappears after dialog closes -->
<!-- Programmatically return focus to trigger -->

<!-- 4. Dynamic content not in a live region -->
<!-- New items added silently, no announcement -->

Keyboard-First Testing

Before using a screen reader, test keyboard-only first:

  1. Unplug your mouse or trackpad
  2. Navigate through the entire page with Tab only
  3. Verify every interactive element is reachable
  4. Verify all actions can be performed with keyboard

Automated Accessibility Testing Tools

Complement manual testing with automated tools:

  • axe DevTools — Chrome extension; most accurate automated checker
  • WAVE — wavebooth.com; visual overlay on the page
  • Lighthouse — Chrome DevTools; Performance + Accessibility audit
  • pa11y — CLI tool; great for CI/CD pipelines

ARIA Patterns Reference

The W3C ARIA Authoring Practices Guide (APG) provides reference implementations:

  • Accordion, Alert, Alert Dialog
  • Breadcrumb, Button, Carousel
  • Checkbox, Combobox, Dialog
  • Disclosure, Feed, Grid
  • Listbox, Menu, Menubar
  • Tab, Tooltip, Treeview

URL: w3.org/WAI/ARIA/apg/

Continuous Accessibility Integration

Build accessibility testing into your workflow:

// Jest + axe-core for unit tests:
import { axe, toHaveNoViolations } from 'jest-axe';
expect.extend(toHaveNoViolations);

test('Button is accessible', async () => {
  const results = await axe('<button>Click me</button>');
  expect(results).toHaveNoViolations();
});

// pa11y in CI pipeline:
// pa11y https://example.com --standard WCAG2AA

Testing Summary

A complete accessibility testing strategy:

  1. Design — check color contrast, touch target sizes
  2. Development — keyboard test, automated axe scan
  3. Review — screen reader test (VoiceOver + NVDA)
  4. CI/CD — pa11y or axe in automated pipeline
  5. Production — Lighthouse + manual spot checks

Quick Check

What percentage of accessibility issues can automated tools reliably catch?

Recap: Screen Reader Testing

Testing essentials:

  • VoiceOver (Mac/iOS) and NVDA (Windows) are free and essential
  • Test keyboard-only first; then add screen reader
  • Automated tools: axe, WAVE, Lighthouse, pa11y
  • Automated tests catch only ~30-40% of issues
  • Reference APG patterns for correct ARIA implementations
Free to start

Learn HTML with an AI tutor — free

Write and run real code in your browser, get instant help from a 24/7 AI tutor, and pick up where you left off on the web or in the app.

Courses
40
Lessons
159

Frequently Asked Questions

Is the “Testing with Screen Readers” lesson free?

Yes — any 3 lessons of the HTML Academy learning path, including “Testing with Screen Readers”, are free to read in full here on the web. After that, CoddyKit PRO unlocks every lesson, plus interactive practice with a built-in code editor and a 24/7 AI tutor. The HTML Academy course includes 4 lessons in total.

What will I learn in “Testing with Screen Readers”?

Use VoiceOver and NVDA to verify ARIA implementations. You practise HTML Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start HTML Academy?

No prior experience is required. HTML Academy on CoddyKit is structured for beginners through advanced learners, so you can start here or from the beginning and move at your own pace. This is lesson 4 of 4.

How long does the “Testing with Screen Readers” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this HTML Academy lesson?

Yes. Every HTML Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. aria-expanded aria-controls for Toggles
  2. aria-selected and Tab Patterns
  3. Live Regions aria-live aria-atomic aria-relevant
  4. Testing with Screen Readers
← Back to HTML Academy