Equall

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).

On this page