Testing strategy
Web accessibility agent skills — 23 cite-backed skills covering APG widget patterns, audit tooling, ARIA guidance, cognitive accessibility, and more. Works with Claude Code, Codex CLI, and Gemini CLI.
npx -y skills add xrnavigation/web-a11y-plugin --skill testing-strategyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Guides accessibility testing strategy — what to test automatically vs manually vs with assistive technology. Provides keyboard testing checklists, screen reader testing basics, and acceptance criteria templates. Use when planning testing, writing acceptance criteria, or deciding how to verify accessibility.
SKILL.md
12.5 KB, as published. Nobody here has run it
Accessibility Testing Strategy
"Automated testing with axe-core identifies 57% of digital accessibility issues by volume." — Deque, Automated Testing Study (2023)
"Automated scans reliably flag only 13% of WCAG 2.1 AA success criteria." — Accessible.org
Automated testing is necessary but insufficient. A complete accessibility testing strategy uses three tiers, each catching different categories of issues.
1. Three Testing Tiers
Tier 1: Automated Testing (~57% of issues by volume)
Tools: axe-core, Lighthouse, WAVE, HTML validators When: Every build / CI pipeline
Catches well:
- Color contrast ratios below thresholds (WCAG 1.4.3)
- Missing
altattributes, form labels, pagelang(Deque, 2023) - Invalid ARIA: duplicate IDs, broken references, invalid roles
- Structural issues: missing bypass blocks, empty/skipped headings
- Missing page title, missing language declaration
Key stat: Seven WCAG criteria account for over 80% of all issues found, with contrast alone at ~30%. (Deque, 2023)
Tier 2: Keyboard Testing
Tools: None required beyond a keyboard When: Every feature / PR
Catches issues automation misses:
- Focus visibility and indicator quality (WCAG 2.4.7)
- Tab order matching visual/reading order (WCAG 2.4.3)
- Keyboard traps (WCAG 2.1.2)
- Interactive element operability (WCAG 2.1.1)
- Skip links and modal focus management
See: ${CLAUDE_SKILL_DIR}/references/keyboard-testing-checklist.md
Tier 3: Screen Reader Testing
Tools: NVDA + Chrome (Windows), VoiceOver + Safari (macOS/iOS), TalkBack + Chrome (Android) When: New components, significant UI changes, pre-release
Catches issues that require hearing what AT communicates:
- Reading order and meaningful sequence (WCAG 1.3.2)
- Live region announcements (WCAG 4.1.3)
- Name, role, value correctness (WCAG 4.1.2)
- Info and relationships communication (WCAG 1.3.1)
See: ${CLAUDE_SKILL_DIR}/references/screen-reader-commands.md
2. What Automated Testing Catches vs Misses
Coverage Breakdown (WCAG 2.1 AA, 55 criteria)
| Detection Level | Criteria Count | Percentage |
|---|---|---|
| Mostly accurate automated detection | 7 of 55 | 13% |
| Partially detectable (flags, needs human review) | 25 of 55 | 45% |
| Cannot be detected by automation | 23 of 55 | 42% |
Source: Accessible.org
What Automation Cannot Catch
| Category | Why Automation Fails |
|---|---|
| Alt text quality | Detects missing alt but not whether text is meaningful |
| Reading order | DOM vs visual order requires human judgment |
| Keyboard operability | Dynamic interaction sequences can't be fully automated |
| Focus management | Context-dependent behavior in SPAs, modals |
| Meaningful labels | "Click here" is technically present but not descriptive |
| Error message quality | Detects presence but not helpfulness |
| Cognitive load | Information organization, plain language |
| Live region behavior | Timing and appropriateness of announcements |
Source: Deque, Manual vs Automated Testing
3. Keyboard Testing Summary
Disconnect the mouse. Start from the browser address bar.
| Check | What to Verify |
|---|---|
| Tab order | Tab moves through all interactive elements in logical order |
| Focus visibility | Every focused element has a visible indicator (3:1 contrast min) |
| Operability | Links: Enter. Buttons: Enter/Space. Checkboxes: Space. Radios: Arrows |
| No traps | Focus never gets stuck; Tab/Shift+Tab/Escape always works |
| Modals | Focus enters modal, cycles within it, Escape closes, focus returns |
| Skip links | First focusable element, moves focus past navigation |
Standard keys:
| Key | Expected Action |
|---|---|
| Tab / Shift+Tab | Move forward/backward through interactive elements |
| Enter | Activate link or button |
| Space | Activate button, toggle checkbox, open select |
| Arrow keys | Navigate within widget (radio group, menu, tabs, listbox) |
| Escape | Close modal, menu, or dialog |
| Home / End | Jump to first/last item in list or menu |
Sources: WebAIM Keyboard Accessibility, UW Keyboard Checklist, W3C Easy Checks
Full checklist: ${CLAUDE_SKILL_DIR}/references/keyboard-testing-checklist.md
4. Screen Reader Testing Basics
Which SR + Browser Pairings to Test
Test in priority order based on market share (WebAIM Survey #10, 2024):
| Priority | Combination | Coverage | Cost |
|---|---|---|---|
| 1 | NVDA + Chrome (Windows) | 21.3% of users | Free |
| 2 | VoiceOver + Safari (macOS) | 7.0% + all iOS | Built-in |
| 3 | JAWS + Chrome (Windows) | 24.7% of users | License required |
| 4 | TalkBack + Chrome (Android) | 27.6% of mobile | Built-in |
Desktop Market Share
| Screen Reader | Share |
|---|---|
| JAWS | 40.5% |
| NVDA | 37.7% |
| VoiceOver | 9.7% |
What to Listen For
When testing with a screen reader, verify:
- Element identification — role announced correctly ("button", "link", "heading level 2")
- Accessible name — label is meaningful and matches visible text (WCAG 2.5.3)
- State changes — expanded/collapsed, checked/unchecked, selected announced on change
- Reading order — content reads in meaningful sequence
- Live regions — dynamic updates announced without requiring navigation
- Heading structure — headings navigable (H key in NVDA), hierarchy logical
Full command reference: ${CLAUDE_SKILL_DIR}/references/screen-reader-commands.md
5. WCAG Criteria Requiring Human Judgment
These criteria cannot be verified by automation — they require understanding of meaning, context, and quality.
| Criterion | Why Human Judgment Needed |
|---|---|
| 1.1.1 Non-text Content (quality) | Can detect missing alt but not accuracy |
| 1.2.1–1.2.5 Media alternatives | Cannot verify transcript/caption accuracy |
| 1.3.2 Meaningful Sequence | Cannot determine if reading order preserves meaning |
| 1.3.3 Sensory Characteristics | Cannot detect reliance on shape/color/location alone |
| 2.4.5 Multiple Ways | Cannot assess navigation method availability across site |
| 2.4.6 Headings and Labels (quality) | Detects headings, not whether they are descriptive |
| 3.1.2 Language of Parts | Cannot determine where language changes occur |
| 3.2.3 Consistent Navigation | Cannot compare consistency across pages |
| 3.2.4 Consistent Identification | Cannot verify consistent naming across pages |
| 3.3.3 Error Suggestion | Cannot evaluate if error messages are helpful |
| 3.3.4 Error Prevention | Cannot verify confirmation/review for critical transactions |
Partially Detectable (flagged but need human confirmation)
| Criterion | Automation Flags | Humans Must Verify |
|---|---|---|
| 1.3.1 Info and Relationships | Missing semantic markup | Whether markup conveys right relationships |
| 1.4.5 Images of Text | Presence of images | Whether images contain text that should be HTML |
| 2.4.4 Link Purpose | Link text exists | Whether text is meaningful in context |
| 4.1.2 Name, Role, Value | ARIA attributes present | Whether names are accurate and useful |
Source: Accessible.org
6. Writing Acceptance Criteria
Per-Story Template
Add to each user story:
Acceptance Criteria:
- [ ] All interactive elements reachable and operable by keyboard
- [ ] Focus order matches visual/logical order
- [ ] Screen reader announces [element] as [expected announcement]
- [ ] Color contrast meets WCAG AA (4.5:1 text, 3:1 large text)
- [ ] Error messages programmatically associated with fields
- [ ] State changes announced to assistive technology
Component-Level Template
Component: [Name]
ARIA Pattern: [APG reference]
Keyboard:
- [ ] [Key]: [Expected behavior]
Screen Reader:
- [ ] Role announced as: [expected role]
- [ ] Name announced as: [expected name]
- [ ] State changes announced: [list states]
Visual:
- [ ] Focus indicator visible (3:1 contrast)
- [ ] Color contrast meets AA
- [ ] Works at 200% zoom
Definition of Done Checklist
- Automated scan passes (axe-core, zero violations)
- Keyboard-only operation verified (full workflow)
- Focus management correct (modals, route changes, dynamic content)
- Screen reader announces all content meaningfully (NVDA or VoiceOver)
- Color contrast meets AA thresholds
- Content reflows at 200% zoom
- Error states announced and associated with fields
- Heading hierarchy logical (no skipped levels)
Full templates: ${CLAUDE_SKILL_DIR}/references/acceptance-criteria-templates.md
Sources: TetraLogical, Section508.gov, TPGi
7. Common Mistakes
See: ${CLAUDE_SKILL_DIR}/references/common-mistakes.md
The most frequent testing anti-patterns:
-
"Axe passes, so we're accessible" — Automation catches at most 57% of issues by volume, and only 13% of WCAG criteria with high confidence. (Deque, Accessible.org)
-
Testing only with one screen reader — JAWS, NVDA, and VoiceOver behave differently. A component working in one may fail in another. Test with at least two. (WebAIM Survey #10)
-
Skipping keyboard testing — The fastest, cheapest tier. No tools needed. Catches focus traps, missing operability, and broken tab order that automation misses entirely.
-
Testing at the end — Accessibility debt compounds. Test each tier as part of the PR workflow, not as a pre-release gate.
-
Writing vague acceptance criteria — "Must be accessible" is not testable. Specify what the screen reader should announce, what keyboard interaction is expected, and what contrast ratio applies.
-
Ignoring mobile — 91.3% of screen reader users use one on mobile. VoiceOver (iOS) and TalkBack (Android) have different interaction models than desktop. (WebAIM Survey #10)
-
Not testing with real assistive technology — Browser DevTools accessibility inspectors show the accessibility tree but not what users actually hear. Run NVDA or VoiceOver and listen.
8. Cross-References
a11y-audit— Full audit methodology and WCAG conformance checkingaria-decision-framework— When and how to use ARIA correctlyfocus-management— Focus trapping, restoration, and roving tabindex patternsform-a11y— Form labeling, error handling, and validation patternslive-regions—aria-liveregion patterns and announcement timing