Skip to content

a11y: check whether DismissibleHint's role="note" has the same async-insert problem fixed in #129 #134

Description

@pitimon

What

dashboard/src/ui/components/DismissibleHint.jsx:55 sets role="note".

#129 changed the same attribute on IngestHealthNotice to role="status" + aria-live="polite",
because that notice is inserted after an async fetch resolves — no user action, no focus move — so
a static note landmark is announced only if the user happens to navigate onto it.

Whether DismissibleHint shares that property is unchecked. If it renders synchronously with
its parent, role="note" is correct and this issue closes as no-change. If it appears in response
to data arriving or state changing after mount, it has the same problem.

Why it is filed rather than fixed

It surfaced during a blast-radius grep on #129 (grep -rn 'role="note"' dashboard/src), which is
the right way to find it and the wrong moment to change it — it is a different component with
different mount semantics, and #129 has no test coverage for it.

To resolve

  1. Determine whether DismissibleHint can appear after its parent has mounted.
  2. If yes: role="status" + aria-live="polite", and a test asserting the live-region attribute
    separately from the role — IngestHealthNotice.test.jsx:83 is the pattern. The role alone is
    what regressed in the case that prompted this.
  3. If no: close with that reasoning recorded, so the next grep does not re-open the question.

Context

#129 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions