<SignIn />: the reset password code step renders an empty, focusable back button with no accessible name
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 85/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
- Ambito
- accessibility, authentication
Direzione di ricerca
Leggi packages/ui/src/components/SignIn/SignInFactorOneForgotPasswordCard.tsx e segui come fornisce le props alla scheda del codice di verifica. L’issue segnala l’assenza di backLinkLabel e suggerisce di usare l’etichetta localizzata del pulsante Indietro; controlla il codice correlato in VerificationCodeCard.tsx e il flusso di reimpostazione della password per l’accesso. Il lavoro è terminato quando il passaggio del codice di reimpostazione ha un nome accessibile per il pulsante Indietro e la violazione di accessibilità relativa al nome del pulsante è risolta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Preliminary Checks
- I have reviewed the documentation: https://clerk.com/docs
- I have searched for existing issues: https://github.com/clerk/javascript/issues
- I have not already reached out to Clerk support via email or Discord (if you have, no need to open an issue here)
- This issue is not a question, general help request, or anything other than a bug report directly related to Clerk. Please ask questions in our Discord community: https://clerk.com/discord.
Reproduction
https://upward-hare-2386.accounts.dev/sign-in
Publishable key
pk_test_dXB3YXJkLWhhcmUtMjM4Ni5jbGVyay5hY2NvdW50cy5kZXYk
Description
The reproduction is the hosted Account Portal of a brand-new development application, created only for this report and left on Clerk's default settings (email + password). It has no appearance, no localization and no custom CSS. Test user: [email protected].
Steps to reproduce:
- Open the sign-in page above and enter
[email protected]. - On the password step, click Forgot password?
- Click Reset your password.
- On the Reset password code step, press Tab from Continue, or run axe on the card.
Expected behavior:
A labelled "Back" button, or no button at all.
Actual behavior:
An empty ghost button is rendered below Continue:
<button class="cl-formButtonReset cl-button 🔒️ cl-internal-sbng93" data-variant="ghost" data-color="primary"></button>
- It is 400×14 px, focusable (
tabIndex0) and the next Tab stop after Continue. When focused, it shows as an empty bar. - It has no text and no
aria-label. axe 4.11 reportsbutton-name(critical, WCAG 4.1.2). - Clicking it works: it goes back to the Forgot Password? screen. So it is a real action that is missing its label, not a leftover element.
Cause (from the source on main):
- Since #7626,
VerificationCodeCardrenders aformButtonResetbutton wheneveronBackLinkClickedis passed. Its text comes from the optionalbackLinkLabelprop that the same PR added. SignInFactorOnepassesonBackLinkClickedtoSignInFactorOneForgotPasswordCardfor bothreset_password_phone_codeandreset_password_email_code.- Neither
SignInFactorOneForgotPasswordCardnorSignInFactorOneCodeFormsetsbackLinkLabel. Before #7626 the card ignoredonBackLinkClicked, so nothing was rendered on this step. Since then, the button is rendered empty. - Only
SmsCodeFlowScreenpasses a label today. The open PR #10396 addsbackLinkLabel={localizationKeys('backButton')}toUVFactorOneCodeFormfor the same reason, but it does not touch the sign-in reset password step.
Possible fix: pass a label, e.g. backLinkLabel={localizationKeys('backButton')}, from SignInFactorOneForgotPasswordCard. As a safeguard, VerificationCodeCard could render the button only when a label is present.
Environment
Hosted Account Portal, development instance with default settings
ClerkJS 6.41.0, @clerk/ui 1.42.0 (window.Clerk.version / window.Clerk.uiVersion)
Chromium 153.0.8010.12 via Playwright 1.63.0, en-US
Same code in @clerk/ui 1.42.4 (latest on npm) and on main (f6d8807c28cf0d31662f3926ae7370cc69e8d554)
Also seen in a Next.js app on @clerk/ui 1.38.0 with the es-ES localization
- Lingua principale
- TypeScript
- Stelle
- 1.8k
- Fork
- 492
- Merge medio
- 1g 6h
- PR unite (30g)
- 367
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un 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 clerk/javascript
-
Built-in reverification dialog lacks an accessible name (aria-dialog-name)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
clerk/javascript#10548 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
clerk/javascript#10547 ·
I maintainer di solito rispondono entro 1 giorno
-
<SignIn />: first "Use email" click switches back to phone when `initialValues.phoneNumber` is setForse già presa @twicestruck l’ha presa 17 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
clerk/javascript#10487 ·
I maintainer di solito rispondono entro 1 giorno
-
useLoadedIsomorphicClerk misses "ready" when a ClerkProvider remounts after clerk-js has loaded — <ClerkLoading> never resolvesForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
clerk/javascript#10462 ·
I maintainer di solito rispondono entro 1 giorno
-
ClerkAPIError drops meta.lockout_expires_in_seconds from user_locked errorsForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
clerk/javascript#10026 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di clerk/javascript
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug platform-android
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Termix-SSH/Mobile#146 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
devswha/herdr-web-ui#3875 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
area: runtime chore cli consistency dependencies developer-experience difficulty: easy discovery documentation enhancement good first issue help wanted hygiene json-output packaging priority: P3 tests version
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno