Accessibility Testing Skill
Accessibility testing on TestMu AI is layered onto an existing automation suite. You do not install a separate tool: you enable a capability on your driver and either trigger scans at chosen points or let every navigation scan automatically. Results appear on the Accessibility dashboard.
Know the one hard limit up front: the automation capabilities can start a scan, but there is no results API, no exit code, and no build-gating flag. To read a report back programmatically (for example, to fail a build), use the Accessibility MCP server (see Core Patterns). Automated scanning also catches only a portion of WCAG; it never replaces manual and screen-reader testing.
Core Patterns
Enable accessibility (capabilities)
// One master switch is required; everything else is optional refinement.
capability.setCapability("accessibility", true); // required
capability.setCapability("accessibility.wcagVersion", "wcag21aa"); // wcag21a | wcag21aa
capability.setCapability("accessibility.bestPractice", false); // default false
capability.setCapability("accessibility.needsReview", true); // include ambiguous issues
Selenium + accessibility
// Option A: trigger a scan at a chosen point (recommended - precise, faster)
capability.setCapability("accessibility", true);
driver.get("https://example.com");
driver.executeScript("lambda-accessibility-scan"); // scan the current page; call as often as needed
// Option B: auto-scan every navigation (Selenium only)
capability.setCapability("accessibility", true);
capability.setCapability("accessibility.autoscan", true);
Run with your normal command, e.g. mvn test. If you use the hook and never call it, no report
is generated.
Playwright + accessibility
const capabilities = {
"accessibility": true,
"accessibility.wcagVersion": "wcag21a",
"accessibility.bestPractice": false,
"accessibility.needsReview": true
};
// Playwright needs the internal scan extension loaded once, after page creation.
// Use Chrome (not Chromium). There is no autoscan/hook on this path.
await ltPage.goto("chrome://extensions/?id=johgkfjmgfeapgnbkmfkfkaholjbcnah");
const toggle = ltPage.locator('#crToggle').nth(0);
await toggle.click();
Run with npx playwright test.
Cypress + accessibility
// lambdatest-config.json - capabilities are dotted here
{ "accessibility": true, "accessibility.wcagVersion": "wcag21aa", "accessibility.needsReview": true }
Register the scanner (file differs by Cypress version):
- v10+: import in
cypress/support/e2e.js, plugin incypress.config.js - v9: import in
cypress/support/index.js, plugin incypress/plugins/index.js
Run with lambdatest-cypress-cli run.
Native mobile app (Appium)
# The scan hook is mandatory for native apps (no autoscan mode).
caps["accessibility"] = True
driver.execute_script("lambda-accessibility-scan")
Read results programmatically (MCP server)
The automation paths write to the dashboard only. The Accessibility MCP server is the one path that returns a report to the caller:
getAccessibilityReport- scan a public URL and return the reportbuildLocalAppForAnalysis- build and serve a local app, then scan it (before deploy)AnalyseAppViaTunnel- scan a local app already running behind a tunnel
Use it for a real "scan after every build" loop where an agent must act on the result.
Authentication
export LT_USERNAME="your-username" # from your TestMu AI Profile page
export LT_ACCESS_KEY="your-access-key"
Quick Reference
| Task | How |
|---|---|
| Enable scanning | accessibility: true capability (required) |
| WCAG level | accessibility.wcagVersion = wcag21a or wcag21aa |
| Best-practice checks | accessibility.bestPractice = true (default false) |
| Ambiguous issues | accessibility.needsReview = true |
| Scan at a point | driver.executeScript("lambda-accessibility-scan") |
| Scan every navigation | accessibility.autoscan = true (Selenium only) |
| Read results in code | Accessibility MCP server (dashboard-only otherwise) |
| Dashboard | https://accounts.lambdatest.com/dashboard -> Accessibility |
Deep Patterns
For per-framework setup, the full capability reference, the accessibility score, severity
levels, the WCAG rule-to-fix mapping (remediation), and what automation does and does not cover,
see reference/playbook.md.