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-attributes

    Valid ARIA attributes

    What it checks

    ARIA states and properties carry the machine-readable state agents act on (expanded, checked, disabled, labels). Invalid attributes or values corrupt that state.

    Why it matters

    ARIA states and properties reach the accessibility tree only when the attribute name and its value are valid for the element’s role; WAI-ARIA 1.2 defines the allowed value type for each state and property. An invalid attribute or token is not exposed at all — aria-expanded="yes", a misspelled aria-* name, or an aria-controls idref that resolves to nothing. The expanded, checked, disabled and selected fields that agent snapshots print are then simply absent, and the agent reads no state where state exists.

    Evidence

    • WAI-ARIA 1.2, W3C Recommendation 06 June 2023, defines each state/property’s allowed value type and that user agents expose the default when a state is undefined for the role — w3.org/…/wai-aria-1.2 (verified 2026-08-21)
    • Playwright ARIA snapshots include “specific ARIA attributes, such as checked, disabled, expanded, invalid, level, pressed, or selected” alongside role and accessible name — playwright.dev/…/aria-snapshots (verified 2026-08-21)
    • Playwright MCP builds the model’s whole view of the page from that tree (“Uses Playwright’s accessibility tree, not pixel-based input”) — github.com/…/playwright-mcp (verified 2026-08-21)
    • Chrome DevTools MCP take_snapshot is “based on the a11y tree” and its click/fill tools consume uids from it — github.com/…/tool-reference.md (verified 2026-08-21)
    • axe rule: ARIA values “must be spelled correctly and correspond to values that make sense for a particular attribute in order to perform the intended accessibility function”. A checkbox role “will become non-functional if given a value outside the three allowed options” (impact: critical) — dequeuniversity.com/…/aria-valid-attr-value (verified 2026-08-21)
    • Accessible Name and Description Computation 1.1 (W3C Recommendation, 18 December 2018) governs the idref-based aria-labelledby/aria-describedby values this audit validates — w3.org/…/accname-1.1 (verified 2026-08-21)

    Limits

    The four bundled rules are not equally load-bearing for an agent: aria-prohibited-attr (e.g. an aria-label on a plain <div>) has no effect on any state the agent acts upon, while aria-valid-attr-value on aria-expanded/aria-checked does. No vendor agent doc names ARIA attribute validity specifically; the proven consumer path is the browser’s accessibility tree, which the agent tools then serialise. The audit’s idref checks also resolve against static HTML, so hydration-deferred targets are flagged although a real browser resolves them.

    How it scores

    WAI-ARIA 1.2 is a ratified W3C Recommendation, and Playwright documents that its accessibility-tree snapshot carries exactly these ARIA-derived properties, so a corrupted value provably changes what the agent sees.

    Sources