Scanning Engines

AllyProof uses three engines to maximize detection coverage while maintaining a zero false-positive baseline. Combined estimated coverage: ~70% of automatable WCAG issues.

Engine Pipeline

Page loaded in Playwright
  ├── Engine 1: axe-core         → "Confirmed violations" (zero false positives)
  ├── Engine 2: HTML_CodeSniffer → "Additional findings" (deduped against axe-core)
  └── Engine 3: APCA             → "WCAG 3.0 Preview" (informational contrast)

Engines 2 and 3 run concurrently after axe-core completes.

Engine 1: axe-core (Primary)

PropertyValue
SourceDeque Systems (open source)
Rules91 active + 5 experimental
StandardsWCAG 2.0/2.1/2.2 A+AA, best-practice
False positivesZero (strict policy)
Coverage~57% of automatable WCAG issues

axe-core is the industry standard. It has a zero false-positive policy, meaning it stays silent rather than risk reporting something that isn't a real violation. This makes it the trusted baseline for all AllyProof scans.

Enabled experimental rules

  • css-orientation-lock — WCAG 1.3.4 Orientation
  • label-content-name-mismatch — WCAG 2.5.3 Label in Name
  • p-as-heading — WCAG 1.3.1 Info and Relationships
  • table-fake-caption — WCAG 1.3.1 Info and Relationships
  • td-has-header — WCAG 1.3.1 Info and Relationships

Engine 2: HTML_CodeSniffer (Secondary)

PropertyValue
SourceSquiz Labs (open source)
Rules~200 rules
StandardsWCAG 2.1 A, AA, AAA
IntegrationBrowser script injection
False positivesLow (errors), Medium (warnings)

HTML_CodeSniffer uses different detection algorithms than axe-core, catching issues that axe-core's strict policy causes it to skip. Results are deduplicated against axe-core by matching HTML snippets — if axe-core already found the issue, HTMLCS findings are discarded.

Only errors and warnings are included. Notices (informational items) are excluded as too verbose. Rule IDs are prefixed with htmlcs- for source identification.

Engine 3: APCA Contrast (Preview)

PropertyValue
SourceMyndex / W3C WCAG 3.0 draft
TypePerceptual contrast calculator
StandardWCAG 3.0 (draft)
False positivesNone (mathematical)

WCAG 3.0 replaces the WCAG 2.x contrast ratio formula with APCA (Advanced Perceptual Contrast Algorithm). APCA accounts for font size, weight, and perceptual uniformity, producing more accurate readability predictions.

APCA Lc thresholds

Lc valueUse case
90+Preferred for body text
75Minimum for body text (16px regular)
60Minimum for large/bold text
45Minimum for non-text UI elements
30Absolute minimum for any text

Coverage Comparison

EngineRulesUnique coverage
axe-core9157% (baseline)
HTML_CodeSniffer~200+10-15% additional
APCA1 (contrast)WCAG 3.0 preview
Combined~290~70%