The signup header's status message stays on the page after it's read out
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 1/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- playwright, react, typescript
- Ambito
- accessibility, frontend, testing
Direzione di ricerca
This work has already merged as #648, so there is no remaining change to pick up. For context, read src/components/signup/HeaderAnnouncer.tsx and HeaderAnnouncer.test.tsx, then check the e2e references in organizer.spec.ts and help/create-and-publish-a-signup.spec.ts; the stated completion checks are that each message clears after five seconds and the listed checks pass.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Needs your OK: this changes what screen-reader users meet when they read a signup's page after a status change. Swap pipeline:proposed for pipeline:ready to have it built.
What happens
- The header has one hidden live region. It's in
HeaderAnnouncer(src/components/signup/HeaderAnnouncer.tsx), a<p role="status" className="sr-only">. It says:- "Closed. People can’t sign up now." after Close signup on the page;
- "Reopened. People can sign up again." after Reopen signup;
- "Published. Anyone with the link can sign up now." from the share panel (
ShareScope); - "Publish and share when you’re ready." from
PublishButton, after a check's fix.
- Nothing clears it. The last message stays in the region until the next one replaces it.
- So it's read twice. A screen reader reads the message once as it arrives. Someone then reading the page line by line meets it again. In the UX walkthrough on #606, a keyboard tester reading line by line just after closing heard: "Signup closed. People can't sign up now. Everyone already signed up keeps their spot. … Closed. People can't sign up now." The region sits after the grey box on purpose, so the layout's spacing doesn't change.
Fix, in outline
- Clear the region a few seconds after each message. After
say(), start a timer that empties the region's text. A new message restarts the timer. - Keep the counter in the span's
key, so the same words said twice are still a new node and are read again. - Clear the timer when the component unmounts.
Watch for
- Tests that read the region:
- In e2e,
organizer.spec.tschecks "Closed. …" and "Reopened. …" withgetByRole('status').filter({ hasText }).help/create-and-publish-a-signup.spec.tschecks "Publish and share when you’re ready.". They retry until the text shows, so they pass while it's there. HeaderAnnouncer.test.tsxreads the region straight after the change. The new test needs fake timers.
- In e2e,
- Don't clear it too soon. A screen reader can still be reading the region after the change, so clearing within a second or so can cut a message short.
- Next's route announcer (
role="alert") fired at the same moment as "Reopened. …" once, on the Settings tab, in the walkthrough. Some screen readers may cut the polite message short. That's not part of this fix; note it if you see it again. - CHANGELOG: add a line under Unreleased › Changed.
Choices this makes
- Clear it after 5 seconds. That's long enough for a screen reader to finish a one-line message, and short enough that someone reading on after a pause doesn't meet it again.
- Clear every message, not only Close's and Reopen's. All four share the one region, and each can be met again in the same way.
Done when
- After each of the four messages, the region holds it and is empty 5 seconds later. A unit test with fake timers pins this, including that a second message restarts the timer and that the same words said twice are still read twice.
- The e2e checks above still pass.
pnpm lint && pnpm typecheck && pnpm knip && pnpm testpass.
From the UX walkthrough comment on #606 (https://github.com/richshaw/OpenSignup/pull/606#issuecomment-6402400080), the change merged as #648. Checked against HeaderAnnouncer.tsx, ShareScope.tsx and PublishButton.tsx on main at 1d4ff3a. https://claude.ai/code/session_01LrYa57fvbqWjZj89iH975K
- Lingua principale
- TypeScript
- Stelle
- 19
- Fork
- 4
- Merge medio
- 20h 9m
- PR unite (30g)
- 156
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di richshaw/OpenSignup
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
richshaw/OpenSignup#654 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
richshaw/OpenSignup#653 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
richshaw/OpenSignup#652 ·
I maintainer di solito rispondono entro 1 giorno
-
SMTP timeout notes in smtp.ts and the changelog describe nodemailer 10.0, not 10.1Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaenhancement good first issue pipeline:ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
richshaw/OpenSignup#645 ·
I maintainer di solito rispondono entro 1 giorno
-
A signup page's first Tab skips the header and lands on the next tabForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug good first issue pipeline:ready pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
richshaw/OpenSignup#644 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di richshaw/OpenSignup
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
outline/outline#14348 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Agent import retains quotes in .env API keys followed by inline commentsForse già presa @yxr-2025 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
elie222/rakazo#2322 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
awslabs/visual-asset-management-system#804 ·
I maintainer di solito rispondono entro 1 giorno
-
用户目录有单引号时,热加载时YAML解析崩溃Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
dsh-market/dsh-market#1027 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno