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/dialog-name

    Dialogs have accessible names

    What it checks

    AI browser agents detect modals via role="dialog"/“alertdialog” and need an accessible name to understand the dialog’s purpose. Unlabeled dialogs trap agents in unknown UI states, blocking confirmations, forms, or cookie-consent flows.

    Why it matters

    An element with role="dialog" or role="alertdialog" is emitted as a dialog node into the accessibility tree that agent snapshot tools read — Playwright MCP browser_snapshot, chrome-devtools-mcp take_snapshot. Its accessible name is computed per accname. With no aria-label and no aria-labelledby the node is emitted unnamed, so an agent that selects targets by role and accessible name cannot identify the modal it is blocked by.

    Evidence

    • Playwright ARIA snapshots are “a YAML representation of the accessibility tree of a page” capturing “roles, attributes, values, and text content”, i.e. role plus accessible name per node — playwright.dev/…/aria-snapshots (verified 2026-08-21)
    • Playwright MCP (the reference browser MCP server) “Uses Playwright’s accessibility tree, not pixel-based input… No vision models needed, operates purely on structured data”; its click/type tools take an “Exact target element reference from the page snapshot” — github.com/…/playwright-mcp (verified 2026-08-21)
    • Chrome DevTools MCP take_snapshot returns “a text snapshot of the currently selected page based on the a11y tree… lists page elements along with a unique identifier (uid)”, and click/fill take that uid — github.com/…/tool-reference.md (verified 2026-08-21)
    • Accessible Name and Description Computation 1.1 is a W3C Recommendation (18 December 2018) defining how user agents derive the name browsers expose — w3.org/…/accname-1.1 (verified 2026-08-21)
    • ARIA Authoring Practices requires a dialog to have “a value set for the aria-labelledby property that refers to a visible dialog title” or “a label specified by aria-label” — w3.org/…/dialog-modal (verified 2026-08-21)
    • axe rule rationale: “Screen reader users are not able to discern the purpose of elements with role="dialog" or role="alertdialog" that do not have an accessible name” (impact: serious; Deque best practice, not a WCAG SC) — dequeuniversity.com/…/aria-dialog-name (verified 2026-08-21)

    Limits

    No vendor agent doc names dialog labelling specifically; an agent can still read the dialog’s inner text from the snapshot subtree, so the missing name degrades rather than blocks comprehension. The rule is a Deque best practice rather than a WCAG success criterion. The signal’s grade does not rescue this audit’s implementation, which evaluates class-hidden pre-rendered dialogs and does not match a bare <dialog> element.

    How it scores

    The accessible-name computation is a W3C Recommendation. Two shipping agent tool-chains document that their entire page representation is the accessibility tree, with role and accessible name. An unnamed dialog is therefore provably an unnamed node in what the agent reads.

    Sources