Scanning
Run scans locally, in CI, or as a pre-commit hook. All CLI flags for the scan command.
Basic usage
equall scan [path]path defaults to the current directory. Exit codes:
| Exit | Meaning |
|---|---|
0 | Scan completed. This is the default for any successful scan, whatever the score. |
1 | Only when --min-score <n> is set and the score is below n (or --min-score itself is invalid). |
2 | Runtime error (invalid path, scanner crash, etc.) |
A successful scan exits 0 by design, so an interactive run never looks like a failure. Opt into a CI gate with --min-score.
Support Summary
The terminal report ends with its takeaway — printed last so it's what stays on screen when the scan finishes. The 0–100 score (a trend indicator, not a pass/fail grade) and an honest verified-subset statement sit just above a WCAG 2.2 Support Summary — three buckets, derived from criterion_conformance, that sum to the target level's criteria total:
◆ EQUALL — Accessibility Score
[...issues and details...]
87 WCAG 2.2 · score is a trend indicator
0 A/AA failures among the 25 criteria automatically verified (31 not evaluated).
WCAG 2.2 Support Summary — AA target · automated basis only
✓ Supports (automated) 25 ✕ Does not support 0 ○ Not evaluated 31
Automated verdicts only — a full statement needs manual + assistive-tech testing. Run --verbose for the per-criterion table."Supports (automated)" and "Does not support" count criterion_conformance entries with verdict pass_automated and fail; "Not evaluated" is every other verdict combined. --verbose expands the full per-criterion table and splits "Not evaluated" into its three reasons — rendered check, assisted, or manual. The count of criteria "automatically verified" comes from summary.criteria_tested — the criteria genuinely exercised this scan, not merely the ones a scanner is capable of; a clean scan states this verified subset, never "None". None of the words "Meets", "conformant", "compliant", or "conformance" appear in the output — automated verdicts state a basis, not a certification.
Flags
| Flag | Description | Default |
|---|---|---|
-l, --level <level> | WCAG conformance target: A, AA, or AAA | AA |
--standard <standard> | WCAG version to evaluate against: wcag22 (Equall's identity) or wcag21 (the public-sector legal bar, WAD/EN 301 549) | wcag22 |
--include <patterns...> | Glob patterns to include | (auto) |
--exclude <patterns...> | Glob patterns to exclude | (auto) |
--json | Emit machine-readable JSON to stdout (log goes to stderr) | |
-i, --show-ignored | Include ignored issues in the output | |
-v, --verbose | Expand the full per-criterion support table + all occurrences for best-practice issues | |
-m, --show-manual | List WCAG criteria that require manual review | |
--no-color | Disable ANSI colors | |
--no-readability | Skip the Flesch-Kincaid reading-grade scanner | |
--min-score <n> | CI gate: exit 1 if the score is below n (0–100). Omit to always exit 0 on a successful scan | (off) |
Common recipes
Target Level A only
equall scan ./public --level AExport a JSON report
equall scan . --json > report.jsonScope to a subfolder
equall scan . --include "src/**"Run in CI (fail the build below a score threshold)
# .github/workflows/a11y.yml
- run: npx equall-cli scan . --level AA --min-score 90Without --min-score, the scan reports the score but still exits 0 — handy for an
informational CI step that never blocks the build.
Skip readability checks for non-English projects
equall scan . --no-readabilityEvaluate against the WCAG 2.1 legal bar instead of 2.2
equall scan . --standard wcag21--standard is a view filter on the conformance table, coverage, and verdict — the 0–100 score is identical regardless of which standard is selected. Under wcag21, the 9 success criteria new in 2.2 (e.g. 2.5.8 Target Size) leave the conformance table (findings on them remain visible as issues elsewhere in the output), and 4.1.1 Parsing reappears as a documented automated pass (obsolete per W3C erratum, so nothing new to check).
Verifying page-level rules
Landmark, document-title and language rules can't be judged from a single component — scan your built output (dist/) to verify them on the composed page. See Verifying page-level rules.
Ignore subcommand
Managing inline equall-ignore comments also ships with a dedicated subcommand — see Ignore system.