Toasts are not announced, and error toasts vanish after six seconds #303

Closed
opened 2026-10-19 12:39:49 -07:00 by rays · 1 comment
Owner

toast() (web/src/util.ts:177) appends a <div> to #toasts (web/index.html:82), which is not a live region, so a screen reader hears nothing: not "Saved", not "Download failed". An error toast removes itself after 6 s (3.2 s for others), with no way to keep it or read it again; someone who looked away, or reads slowly, loses it.

Found in an interface review (2026-10-19): Playwright raised an error toast and it was gone after 7 s; #toasts has no role. WCAG 4.1.3, 2.2.1.

Fix: role="status" on #toasts (it is on the page before any text arrives, which is what a live region needs). Error toasts stay until dismissed, with a close button.

`toast()` (`web/src/util.ts:177`) appends a `<div>` to `#toasts` (`web/index.html:82`), which is not a live region, so a screen reader hears nothing: not "Saved", not "Download failed". An error toast removes itself after 6 s (3.2 s for others), with no way to keep it or read it again; someone who looked away, or reads slowly, loses it. Found in an interface review (2026-10-19): Playwright raised an error toast and it was gone after 7 s; `#toasts` has no role. WCAG 4.1.3, 2.2.1. Fix: `role="status"` on `#toasts` (it is on the page before any text arrives, which is what a live region needs). Error toasts stay until dismissed, with a close button.
rays added the bug label 2026-10-19 12:39:49 -07:00
Author
Owner

Fixed in 6ec2c35: #toasts is role=status (on admin.html too), an error toast stays until dismissed with its x, and no more than four show at once. Deployed in ipx-web (1.2.1-dev).

Fixed in 6ec2c35: `#toasts` is role=status (on admin.html too), an error toast stays until dismissed with its x, and no more than four show at once. Deployed in ipx-web (1.2.1-dev).
rays closed this issue 2026-10-19 13:13:45 -07:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rays/ipx#303