Scanners
Which engines Equall aggregates, what they cover, and when to opt out.
Equall ships four scanners, all enabled by default. They run in parallel per file; failures in one scanner never affect the others.
When two engines flag the same problem on the same element — a missing alt is both axe-core's image-alt and eslint's alt-text — the findings are merged into a single issue instead of being counted twice. The merged issue keeps the source line and credits every agreeing engine in its scanners field. Merging is deliberately conservative: when several occurrences in a file make the match ambiguous, both findings are kept — over-counting is visible, dropping a real finding would not be.
axe-core
Covers: most of WCAG Level A and AA for static HTML. Strong on color contrast, ARIA validity, landmark structure, image alt text.
Runs on: .html, .htm, and extracted HTML from JSX/TSX/Vue/Svelte/Astro.
Why bundled: the de facto standard for automated a11y testing — same engine Deque's own tools use.
eslint-plugin-jsx-a11y
Covers: component-level rules for React JSX and TSX — things like alt-text, anchor-is-valid, click-events-have-key-events.
Runs on: .jsx, .tsx, .astro. On .astro it reads the template through the Astro parser, so the same jsx-a11y rules catch component-pattern issues axe misses.
Note: on TSX files without @typescript-eslint/parser, this scanner returns zero issues. Equall bundles the parser automatically.
readability
Covers: WCAG 3.1.5 Reading Level (AAA). Uses the Flesch-Kincaid grade formula via text-readability.
Runs on: .html, .vue, and .astro files with readable prose content.
⚠ English-only. The formula is calibrated on English corpora. Files whose <html lang="..."> attribute is set to a non-English language are skipped automatically — they don't contribute issues, but they also don't lower coverage.
Disable globally: --no-readability opts out entirely. Useful for non-English projects that don't want the disclaimer message.
error-identification
Covers: WCAG 3.3.1 (Error Identification) and 3.3.3 (Error Suggestion). Checks forms for proper labels, error feedback, and required-field semantics.
Runs on: .html, .vue, .svelte, .astro.
Opting out
The generic disableScanners option in RunScanOptions accepts a list of scanner names. The CLI currently exposes this via --no-readability; future scanner-specific flags will follow the same --no-<name> convention (commander's --no-* pattern).