Chrome + NVDA live region isolation test

Every button waits 3 seconds before firing, so you can move focus, Alt+Tab away, or do nothing — whatever you want to test. Note for each test whether NVDA spoke. Run the same list in Firefox for a baseline.

1. Plain visible region

Baseline. If this is silent, the problem is NVDA/Chrome-wide, not RemWeb's markup.

2. Same regions, hidden with RemWeb's .visually-hidden

If 1 speaks and 2 does not, the sr-only CSS is what Chrome is pruning.

3. RemWeb's exact pattern: alternating pair, three lines 1s apart

Clears the other region and writes this one, the way SpeechAnnouncer does.

4. role="alert" injected fresh each time

A different mechanism — a new node with role=alert, not a mutation of a standing region.

5. Fullscreen (this is what keyboard capture does on Chrome)

Goes fullscreen, fires three announcements 1s apart, then exits after 5s. Hold Escape if it gets stuck. The first uses a region outside the fullscreen element — exactly RemWeb today. The second puts the region inside it. The third fullscreens the whole document instead.

6. Focus parked on role="application"

RemWeb focuses a role=application surface while capturing.

application surface

7. Web Speech API (browser TTS, not NVDA)

Independent of the accessibility tree. If this speaks when nothing else does, it is a viable fallback.

Log

Fullscreen. Announcements are firing.