You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 52cc0db
Browse filesBrowse the repository at this point in the historyBrowse files
The a11y scanner ships two built-in scan engines: [axe-core](https://github.com/dequelabs/axe-core) (the default) and [AccessLint](https://github.com/AccessLint/accesslint), a newer, lightweight ruleset. Both run against the live page, report WCAG violations, and share a large core of checks. axe is the mature, well-documented baseline; AccessLint adds extra WCAG 2.2 and best-practice checks. This doc explains what AccessLint adds and which combination to pick.
3
+
The a11y scanner ships two built-in scan engines: [axe-core](https://github.com/dequelabs/axe-core) (the default) and [AccessLint](https://github.com/AccessLint/accesslint), a newer, lightweight ruleset. Both run against the live page and report WCAG violations, and the two mostly overlap. axe is the mature, well-documented baseline; AccessLint adds a small set of checks axe doesn't run by default. This doc covers what's different and which to enable.
4
4
5
5
> 👉 Pick engines with the `scans` input. They run independently and file their findings as separate issues.
6
6
@@ -9,14 +9,14 @@ The a11y scanner ships two built-in scan engines: [axe-core](https://github.com/
|**Strength**| Mature, widely adopted, well-documented baseline | Lightweight second pass with newer WCAG 2.2 and best-practice checks|
19
+
|**Strength**| Mature, widely adopted, well-documented baseline | Lightweight second pass; adds a few checks axe doesn't run by default|
20
20
|**Coverage**| WCAG 2.0/2.1/2.2 (A/AA/AAA) tags plus best practices; some 2.2 rules are off by default | WCAG 2.2 A/AA plus best-practice rules |
21
21
|**Per-rule docs**| Deque University help URL on every finding | Rule IDs + messages; less rich public per-rule docs |
22
22
|**Main risk**| Doesn't catch every WCAG issue automatically (~57%) | Newer and less battle-tested; smaller ecosystem |
@@ -25,12 +25,21 @@ Both cover the same large core: alt text, link/button names, form labels, ARIA v
25
25
26
26
## What AccessLint adds
27
27
28
-
AccessLint includes checks that may not be surfaced by the scanner's default axe configuration, including some WCAG 2.2 and best-practice checks. Findings link to the [AccessLint rules reference](https://github.com/AccessLint/accesslint/blob/main/core/README.md#rules-1). Examples:
28
+
The engines share most of their rules (AccessLint ships ~93, axe ~104, and the bulk map to the same checks). Measured against the scanner's **default** axe run, these are the only AccessLint checks with no axe rule that fires. See the [AccessLint rules reference](https://github.com/AccessLint/accesslint/blob/main/core/README.md#rules-1) for the full catalog.
29
29
30
-
-**Focus Visible (2.4.7)** — focusable elements without a visible focus indicator.
31
-
-**Orientation (1.3.4)** — pages locked to a single screen orientation.
-**Audio transcript (1.2.1)** — `<audio>` without a text alternative.
34
-
- Best-practice extras such as generic alt wording ("image", "photo") and paragraphs styled to look like headings.
30
+
**No axe rule covers these:**
35
31
36
-
axe has its own 2.1/2.2 and best-practice rules too (for example `avoid-inline-spacing` for text spacing), so expect overlap rather than a clean split.
32
+
-**Visible focus indicator** (2.4.7 AA) — `keyboard-accessible/focus-visible`: focusable elements must show a visible focus indicator.
33
+
-**Accessible authentication** (3.3.8 AA) — `input-assistance/accessible-authentication`: password fields must not block password managers / paste.
34
+
-**Generic alt wording** — `text-alternatives/image-alt-words`: alt text shouldn't be "image", "photo", etc. (axe only flags alt that _duplicates adjacent text_).
35
+
-**Presentational element with focusable children** — `aria/presentational-children-focusable` (adjacent to axe's `presentation-role-conflict`, but a separate check).
36
+
37
+
**axe has the rule, but only as _experimental_, so the scanner's default run skips it:**
-**Focusable element without a semantic role** — `keyboard-accessible/focus-order` ↔ axe `focus-order-semantics`.
43
+
-**Large-table data cell without a header** — `adaptable/td-has-header` ↔ axe `td-has-header`.
44
+
45
+
Everything else overlaps. Even where rule IDs differ the checks coincide — e.g. 1.4.12 text spacing (axe's single `avoid-inline-spacing` vs AccessLint's `letter-spacing` / `line-height` / `word-spacing`) and 1.2.1 audio (axe `audio-caption` vs AccessLint `audio-transcript`).
0 commit comments