The scanner parses the serialized HTML of every page and runs axe-core rules against the DOM tree before any JavaScript executes. Missing alt attributes, empty link text, skipped heading levels, and absent form labels are caught here — the violations most commonly cited in ADA demand letters.
BComputed accessibility tree
After the page fully renders, the scanner reads the browser's computed accessibility tree through Playwright. This catches violations that the raw HTML hides: ARIA roles that contradict the visible DOM, focus order that differs from visual order, and color-contrast failures calculated from the browser's actual resolved styles.
CKeyboard and focus navigation
Automated tab-sequence traversal verifies every interactive element is reachable by keyboard alone, has a visible focus indicator, and can be activated without a pointer. Focus traps — dialogs that capture and never release keyboard focus — are flagged as critical.
DScreen-reader simulation
The scanner drives a headless assistive-technology layer and records the announcement sequence a user of NVDA or JAWS would hear. Misleading button labels, unlabeled landmark regions, and form fields whose error messages are not announced are caught at this layer.
EClick-through interaction
Menus, accordions, carousels, modals, and tab panels are opened before scanning. Content gated behind user interaction — the most common source of missed violations in static scanners — is fully exercised before any rule is evaluated.
FCross-page state propagation
Session cookies, authenticated routes, and lazy-loaded content are handled across the full crawl. Violations that only appear on page two of a multi-step form, or inside a members-only section, are included in the audit. Each finding is deduplicated across layers so a single violation appears once, not four times.