paqad-ai
Version:
Spec-driven development framework — AI agents that think before they type
53 lines (39 loc) • 2.65 kB
Markdown
# WCAG 2.2 Mapping
verified: 2026-11-02
The most common audit findings → WCAG 2.2 success criterion ids. Cite the id in every finding (analog of WSTG ids in pentest).
## Perceivable
- `WCAG-2.2-1.1.1`: Non-text Content (Level A). Missing `alt`, decorative images without `alt=""`.
- `WCAG-2.2-1.3.1`: Info and Relationships (Level A). Missing semantic landmarks, headings out of order, missing form labels.
- `WCAG-2.2-1.4.3`: Contrast (Minimum) (Level AA). Text < 4.5:1, large text < 3:1.
- `WCAG-2.2-1.4.4`: Resize Text (Level AA). Fixed `px` font sizes that prevent zoom.
- `WCAG-2.2-1.4.11`: Non-text Contrast (Level AA). Focus rings, form borders, icon-only buttons < 3:1.
- `WCAG-2.2-1.4.12`: Text Spacing (Level AA). Layouts that break when text spacing is increased.
## Operable
- `WCAG-2.2-2.1.1`: Keyboard (Level A). Anything pointer-only.
- `WCAG-2.2-2.1.2`: No Keyboard Trap (Level A). Modals without escape, focus loops.
- `WCAG-2.2-2.4.3`: Focus Order (Level A). DOM order vs visual order mismatch; positive `tabindex`.
- `WCAG-2.2-2.4.7`: Focus Visible (Level AA). `outline: none` without replacement.
- `WCAG-2.2-2.4.11`: Focus Not Obscured (Minimum) (Level AA, new in 2.2). Sticky headers covering focused element.
- `WCAG-2.2-2.5.5`: Target Size (Enhanced), best practice; target < 24×24 fails.
- `WCAG-2.2-2.5.8`: Target Size (Minimum) (Level AA, new in 2.2). Pointer targets < 24×24 CSS pixels.
- `WCAG-2.2-3.3.7`: Redundant Entry (Level A, new in 2.2). Forms that re-ask for already-provided info.
- `WCAG-2.2-3.3.8`: Accessible Authentication (Minimum) (Level AA, new in 2.2). CAPTCHAs without alternative.
## Understandable
- `WCAG-2.2-3.1.1`: Language of Page (Level A). Missing `<html lang>`.
- `WCAG-2.2-3.2.2`: On Input (Level A). Form fields that auto-submit on change.
## Motion / preferences
- `WCAG-2.2-2.3.3`: Animation from Interactions (Level AAA, informational). Respect `prefers-reduced-motion`.
## axe-core rule → WCAG mapping (subset)
| axe rule id | WCAG id |
| ----------------------- | ---------------- |
| `color-contrast` | `WCAG-2.2-1.4.3` |
| `image-alt` | `WCAG-2.2-1.1.1` |
| `button-name` | `WCAG-2.2-4.1.2` |
| `link-name` | `WCAG-2.2-2.4.4` |
| `label` | `WCAG-2.2-1.3.1` |
| `landmark-one-main` | `WCAG-2.2-1.3.1` |
| `focus-order-semantics` | `WCAG-2.2-2.4.3` |
| `tabindex` | `WCAG-2.2-2.4.3` |
| `target-size` | `WCAG-2.2-2.5.8` |
| `html-has-lang` | `WCAG-2.2-3.1.1` |
axe emits more rules than this; map novel ones at finding time using the published axe-core docs.