<SignIn />: the reset password code step renders an empty, focusable back button with no accessible name
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 85/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- react, typescript
- Domaine
- accessibility, authentication
Piste de recherche
Lisez packages/ui/src/components/SignIn/SignInFactorOneForgotPasswordCard.tsx et suivez la manière dont ce composant fournit des props à la carte du code de vérification. L’issue indique que backLinkLabel manque et suggère d’utiliser le libellé localisé du bouton de retour ; examinez le code associé dans VerificationCodeCard.tsx et le flux de réinitialisation du mot de passe à la connexion. Le travail est terminé lorsque l’étape du code de réinitialisation dispose d’un nom accessible pour le bouton de retour et que la violation d’accessibilité concernant le nom du bouton est résolue.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- TypeScript
- Étoiles
- 1.8k
- Forks
- 492
- Merge moyen
- 1 j 6 h
- PR mergées (30 j)
- 367
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de clerk/javascript
-
Built-in reverification dialog lacks an accessible name (aria-dialog-name)Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
clerk/javascript#10548 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
clerk/javascript#10547 ·
Les mainteneurs répondent en général sous 1 jour
-
<SignIn />: first "Use email" click switches back to phone when `initialValues.phoneNumber` is setPeut-être pris @twicestruck l’a pris il y a 18 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
clerk/javascript#10487 ·
Les mainteneurs répondent en général sous 1 jour
-
useLoadedIsomorphicClerk misses "ready" when a ClerkProvider remounts after clerk-js has loaded — <ClerkLoading> never resolvesPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
clerk/javascript#10462 ·
Les mainteneurs répondent en général sous 1 jour
-
ClerkAPIError drops meta.lockout_expires_in_seconds from user_locked errorsPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
clerk/javascript#10026 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de clerk/javascript
Issues similaires
-
Add: BOM CineOuverteapproved check:passed streams:add
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
bug platform-android
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Termix-SSH/Mobile#146 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
MCP mcp-feedback-pattern
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
getsentry/toolkit#2276 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
devswha/herdr-web-ui#3875 ·