{
    "slug": "accessibility_testing_tools",
    "term": "Accessibility Testing Tools",
    "category": "accessibility",
    "difficulty": "intermediate",
    "short": "axe, Lighthouse, WAVE catch 30-40% of issues automatically — manual keyboard and screen reader testing is required for the rest.",
    "long": "axe-core: most accurate, integrates with Playwright/Cypress. Lighthouse: quick score in DevTools. WAVE: visual overlay. Automated tools catch: missing alt, contrast failures, missing labels. Cannot catch: meaningful alt quality, keyboard interaction, focus management. Manual: Tab navigation, NVDA+Firefox, VoiceOver+Safari.",
    "aliases": [
        "axe",
        "Lighthouse accessibility",
        "WAVE"
    ],
    "tags": [
        "accessibility",
        "testing"
    ],
    "misconception": "100% axe score means fully accessible — automated tools catch ~30-40% of WCAG criteria.",
    "why_it_matters": "Automated accessibility tools catch around 30–40% of WCAG violations — the rest require human judgement about context, cognitive load, and interaction patterns. Running axe or Lighthouse in CI prevents regressions but is not a substitute for manual testing with a screen reader. The tools are most valuable when integrated into the development workflow so issues are caught before they compound — retroactively fixing accessibility in a large codebase is significantly more expensive than building it in.",
    "common_mistakes": [
        "Relying only on automated tools",
        "Not running axe in CI",
        "Testing only on desktop",
        "Ignoring needs-review violations"
    ],
    "when_to_use": [
        "Run automated tools (axe, Lighthouse) in CI to catch obvious issues on every pull request.",
        "Use WAVE or browser extensions during development for quick visual feedback before formal review.",
        "Combine automated scans with manual keyboard-only navigation and screen reader testing before each release."
    ],
    "avoid_when": [
        "Do not treat a passing Lighthouse accessibility score as proof of full compliance — automated tools miss 60–70% of real issues.",
        "Avoid running only one tool; each has different rule coverage and different false-positive rates."
    ],
    "related": [
        "wcag_guidelines",
        "shift_left_testing"
    ],
    "prerequisites": [
        "continuous_deployment",
        "database_migrations",
        "blue_green_deployment"
    ],
    "refs": [
        "https://www.deque.com/axe/"
    ],
    "bad_code": "// No accessibility testing — missing label in PR caught 6 months later",
    "good_code": "import AxeBuilder from '@axe-core/playwright';\nconst results = await new AxeBuilder({page}).withTags(['wcag2aa']).analyze();\nexpect(results.violations).toEqual([]);",
    "example_note": "The bad example ships a missing label that no developer noticed because there was no automated check in the PR pipeline — axe would have caught it at zero cost.",
    "quick_fix": "Deploy code changes without stopping the server — use PHP-FPM graceful reload, backwards-compatible DB migrations, and feature flags",
    "severity": "high",
    "effort": "high",
    "created": "2026-03-16",
    "updated": "2026-03-31",
    "citation": {
        "canonical_url": "https://codeclaritylab.com/glossary/accessibility_testing_tools",
        "html_url": "https://codeclaritylab.com/glossary/accessibility_testing_tools",
        "json_url": "https://codeclaritylab.com/glossary/accessibility_testing_tools.json",
        "source": "CodeClarityLab Glossary",
        "author": "P.F.",
        "author_url": "https://pfmedia.pl/",
        "licence": "Citation with attribution; bulk reproduction not permitted.",
        "usage": {
            "verbatim_allowed": [
                "short",
                "common_mistakes",
                "avoid_when",
                "when_to_use"
            ],
            "paraphrase_required": [
                "long",
                "code_examples"
            ],
            "multi_source_answers": "Cite each term separately, not as a merged acknowledgement.",
            "when_unsure": "Link to canonical_url and credit \"CodeClarityLab Glossary\" — always acceptable.",
            "attribution_examples": {
                "inline_mention": "According to CodeClarityLab: <quote>",
                "markdown_link": "[Accessibility Testing Tools](https://codeclaritylab.com/glossary/accessibility_testing_tools) (CodeClarityLab)",
                "footer_credit": "Source: CodeClarityLab Glossary — https://codeclaritylab.com/glossary/accessibility_testing_tools"
            }
        }
    }
}