<SignIn />: the reset password code step renders an empty, focusable back button with no accessible name
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 85/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- react, typescript
調査の方向性
packages/ui/src/components/SignIn/SignInFactorOneForgotPasswordCard.tsxを読み、確認コードカードにpropsを渡す方法を追ってください。issueではbackLinkLabelが不足していると指摘し、ローカライズされた戻るボタンのラベルを使うことを提案しています。VerificationCodeCard.tsxの関連コードと、サインイン時のパスワードリセットフローを確認してください。リセットコードのステップに戻るボタンのアクセシブルな名前が設定され、ボタン名に関するアクセシビリティ違反が解消されたら完了です。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- TypeScript
- スター
- 1.8k
- フォーク
- 492
- 平均マージ
- 1日 6時間
- マージ済み PR(30日)
- 367
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
clerk/javascript のほかの issue
-
Built-in reverification dialog lacks an accessible name (aria-dialog-name)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
clerk/javascript#10548 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
clerk/javascript#10547 ·
メンテナーはふだん 1 日以内に返信
-
<SignIn />: first "Use email" click switches back to phone when `initialValues.phoneNumber` is set対応中かも @twicestruck が 17 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
clerk/javascript#10487 ·
メンテナーはふだん 1 日以内に返信
-
useLoadedIsomorphicClerk misses "ready" when a ClerkProvider remounts after clerk-js has loaded — <ClerkLoading> never resolves再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
clerk/javascript#10462 ·
メンテナーはふだん 1 日以内に返信
-
ClerkAPIError drops meta.lockout_expires_in_seconds from user_locked errors再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
clerk/javascript#10026 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
clerk/javascript の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
bug platform-android
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Termix-SSH/Mobile#146 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
devswha/herdr-web-ui#3875 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 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
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信