Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Announcement capture records text from a live region inside aria-hidden

Closed
#339 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
59/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
playwright, typescript

Research direction

Start in src/deps/real.ts and trace how announcement capture resolves a change's live host and walks live values on the flat tree. Check the toast rule for a shared hidden-state rule, then add real-browser tests for a polite region inside aria-hidden="true", an aria-hidden wrapper, and aria-hidden="false". Done means hidden, inert, and hidden content is not recorded as announced while aria-hidden="false" is handled correctly.

Written by the indexing model from the issue text.

Description

accessibility area: engine bug

What happens

The announcement capture in src/deps/real.ts records text from a live region inside an aria-hidden="true" subtree. A screen reader says nothing for that region, but usabl records the text as announced.

Why it matters

Flow requirements check expectedAnnouncement against this capture with an exact match. A requirement that expects "Item archived" passes on a page where the status sits inside aria-hidden="true", though no user hears it. That is a false green in shipped behavior, not only in the voice lane preview.

Evidence

Found in the voice lane Phase 0 measurement against Orca 49.7 with Chromium 151. Fixture f12: a polite status inside aria-hidden="true". Orca's speech log has nothing for it; usabl's capture recorded "Item archived". The measurement ran on main before the effective live value resolver landed; that resolver handles aria-live values and roles, and does not look at aria-hidden.

Fix direction

When the capture resolves a change's live host, a change inside an aria-hidden="true" subtree (and inside inert or hidden content) is not recorded. Resolve hidden state on the flat tree the same way the live value walk does, and share the rule with the toast rule if that rule needs it too. Add a real-browser test for a polite region inside aria-hidden="true", for an aria-hidden wrapper between the region and the change, and for aria-hidden="false".

Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
6h 42m
Merged PRs (30d)
44

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from usabl-dev/usabl

All issues in usabl-dev/usabl

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.