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
- Determine whether
DismissibleHint can appear after its parent has mounted.
- 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.
- If no: close with that reasoning recorded, so the next grep does not re-open the question.
Context
#129 (comment)
What
dashboard/src/ui/components/DismissibleHint.jsx:55setsrole="note".#129 changed the same attribute on
IngestHealthNoticetorole="status"+aria-live="polite",because that notice is inserted after an async fetch resolves — no user action, no focus move — so
a static
notelandmark is announced only if the user happens to navigate onto it.Whether
DismissibleHintshares that property is unchecked. If it renders synchronously withits parent,
role="note"is correct and this issue closes as no-change. If it appears in responseto 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 isthe 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
DismissibleHintcan appear after its parent has mounted.role="status"+aria-live="polite", and a test asserting the live-region attributeseparately from the role —
IngestHealthNotice.test.jsx:83is the pattern. The role alone iswhat regressed in the case that prompted this.
Context
#129 (comment)