CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/axe-a11y

Automated accessibility scanning across the five engines - axe-core (primary), pa11y, Lighthouse a11y, WAVE, and IBM Equal Access. Authors and runs axe-core scans via the `axe.run()` JavaScript API or the @axe-core/playwright / @axe-core/cli wrappers, parses `violations[]` into per-rule severity, configures rule disable / disable-by-tag patterns, and emits CI-gateable output; references/ carry the pa11y CLI (htmlcs + axe runners), Lighthouse CI `categories:accessibility` assertions, the WAVE API / overlay, and IBM Equal Access (Section 508) with their verified CLI / API / config. Use for any automated a11y scanner setup - axe-core for JS/TS UI test suites on every PR, and the references for CLI-only, Lighthouse-pipeline, WebAIM-branded, or Section 508 scanning.

75

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

results-and-config.mdreferences/

axe-core results structure and rule configuration

Results structure

axe.run() resolves to an object with four arrays (axe-core):

FieldMeaning
violationsDefinite issues - block this in CI.
incompleteItems needing human review (axe couldn't determine).
passesSuccessful checks.
inapplicableRules that don't apply to this page.

Each violation has:

FieldMeaning
idRule ID (e.g. color-contrast, label, aria-required-attr).
impactcritical / serious / moderate / minor.
tagsIncludes wcag2a, wcag22aa, etc. - for severity-by-SC tagging.
descriptionOne-line explanation.
helpLonger remediation guidance.
helpUrlDirect link to Deque's rule documentation.
nodesArray of failing elements with target (selector), html, failureSummary.

Triage with jq:

# Top violations by impact
jq -r '.violations[] | "\(.impact): \(.id) - \(.description)"' axe-results.json

# Just the failing selectors per rule
jq -r '.violations[] | "\(.id):", (.nodes[].target | tostring)' axe-results.json

Rule configuration

By tags

axe ships rules tagged with conformance levels:

new AxeBuilder({ page }).withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])

Common tag sets:

Tag setCoverage
['wcag2a', 'wcag2aa']WCAG 2.0/2.1 A + AA. Default for most teams.
['wcag2a', 'wcag2aa', 'wcag22aa']Adds WCAG 2.2 AA criteria.
['wcag2aaa']AAA-only (rarely the gate).
['best-practice']Non-WCAG good practices.
['experimental']Beta rules.

Disable specific rules

new AxeBuilder({ page }).disableRules(['color-contrast'])

For per-page disabling (e.g. a known false positive on a specific component):

new AxeBuilder({ page })
  .exclude('.legacy-component')   // selector exclusion
  .analyze();

For per-rule severity in CI gating (e.g. block on critical / serious only): handle in a11y-violation-gate using the impact field.

SKILL.md

tile.json