Opens in a new tabSkip to content
Agent LighthouseAgent Lighthouse

    Searches the text of every published page. The evidence sources themselves are not in this index — search all of them on the trusted sources page.

    GitHub ↗
    Browse checks and page contents
    operability-safety/aria-hidden-body

    Page exposed to the accessibility tree

    What it checks

    aria-hidden="true" on the document body removes the entire page from the accessibility tree. AI browser agents that navigate via the accessibility tree would see nothing at all.

    Why it matters

    aria-hidden="true" on <body> excludes the element and all its descendants from the accessibility tree, per WAI-ARIA 1.2 §7.1. An agent whose page representation is built from that tree — Playwright MCP browser_snapshot, chrome-devtools-mcp take_snapshot — receives an empty snapshot. It can then neither read nor act on any page content.

    Evidence

    • WAI-ARIA 1.2 is a W3C Recommendation (06 June 2023); §7.1 “Excluding Elements from the Accessibility Tree” specifies that aria-hidden="true" removes the element and its descendants from the tree — w3.org/…/wai-aria-1.2 (verified 2026-08-21)
    • Playwright ARIA snapshots are “a YAML representation of the accessibility tree of a page” — playwright.dev/…/aria-snapshots (verified 2026-08-21)
    • Playwright MCP “Uses Playwright’s accessibility tree, not pixel-based input… operates purely on structured data” — github.com/…/playwright-mcp (verified 2026-08-21)
    • Chrome DevTools MCP take_snapshot gives the model “a text snapshot of the currently selected page based on the a11y tree”, and interaction tools address elements only by uids from that snapshot — github.com/…/tool-reference.md (verified 2026-08-21)
    • axe rule: “Document content is not accessible to assistive technology if <body aria-hidden="true">” (impact: critical) — dequeuniversity.com/…/aria-hidden-body (verified 2026-08-21)

    Limits

    Screenshot/pixel-driven agents (computer-use style) are unaffected — they never consult the accessibility tree, so the failure is total for tree-based agents and invisible to vision-based ones. The condition is also vanishingly rare in static HTML. Its realistic occurrence is a modal library setting aria-hidden on the root at open time, which happens only after JS runs — and this pipeline never observes that. A high grade for the signal therefore coexists with a near-zero hit rate for the audit as implemented.

    How it scores

    WAI-ARIA 1.2 is a ratified W3C Recommendation whose accessibility-tree exclusion is implemented by every browser, and the two documented agent snapshot tools state their representation is that tree, so the empty-page outcome is deterministic rather than inferred.

    Sources