New Features (2026-06-19) — WCAG 2.2 Audit Engine
The accessibility audit gains a WCAG 2.2 / EN 301 549 success-criterion layer: each defect is tagged with the WCAG criterion it violates (id + name + conformance level + impact), and a new WCAG 2.2 rule — Target Size (Minimum), SC 2.5.8 — is computed from element bounds. The result is a conformance-style report you can map to EN 301 549 for accessibility compliance evidence (the European Accessibility Act is enforceable since June 2025). Pure standard library; wired through the full stack.
Conformance audit
from je_auto_control import wcag_audit
report = wcag_audit(level="AA") # live a11y tree
report = wcag_audit(elements=els, # or supply elements/colours/text
contrast_pairs=pairs, texts=ocr_texts, level="AA")
report["conformant"] # True when no findings at the requested level
report["by_criterion"] # {"1.4.3 Contrast (Minimum)": 2, ...}
report["findings"] # each tagged {sc, criterion, level, impact, ...}
Findings are filtered to the requested conformance level (A /
AA / AAA). Mapped success criteria:
1.1.1 / 4.1.2 — interactive element with no accessible name.
1.4.3 Contrast (Minimum) — foreground/background below the ratio.
1.4.10 Reflow — clipped / truncated text.
2.5.8 Target Size (Minimum) — new in 2.2: pointer targets smaller than 24x24 px.
Target Size rule
audit_target_size(elements, min_px=24) flags interactive elements whose
bounds are smaller than min_px on either side (elements with unknown
size are skipped). tag_issue(issue) annotates any base AuditIssue
with its success criterion, so existing audits gain SC tagging too.
Exposed as AC_wcag_audit / ac_wcag_audit (and wcag_audit /
audit_target_size on the package facade).