"auth-reset-password-form-via-otp.test.tsx: changed getByLabelText(\"New Password\") to getByLabelText(\"New Password *\") to match PasswordField label with RequiredMark suffix",
"auth-verify-otp-form.test.tsx: changed synchronous act(() => vi.advanceTimersByTime(30_000)) to async per-tick loop (30x await act(async () => vi.advanceTimersByTime(1000))) to allow React useEffect to re-run between countdown ticks"
],
"testcases":[
{
"name":"ForgotPasswordForm \u2014 rendering (clean state) renders the Forgot Password heading",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 rendering (clean state) renders the mobile number input with correct attributes",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 rendering (clean state) renders the +91 prefix label",
"name":"ForgotPasswordForm \u2014 rendering (clean state) renders the Back to Sign In link pointing to /login",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 rendering (clean state) renders the footer hint text",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 field error state shows a mobile field error when fieldErrors.mobile is set",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 field error state does not show a generic error message when fieldErrors is set (field error takes priority in the template)",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 generic error state shows a generic error message when ok=false and message is present with no fieldErrors",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 generic error state does not show any error when state is clean (ok=true, no message)",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 success message state shows the success message in green when ok=true and message is present",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 Server Action wiring binds useFormState to requestPasswordResetOtp with ok=true initial state",
"status":"PASS"
},
{
"name":"ForgotPasswordForm \u2014 Server Action wiring calling the bound action delegates to requestPasswordResetOtp",
"status":"PASS"
},
{
"name":"ForgotPasswordPage \u2014 rendering renders the ForgotPasswordForm component",
"status":"PASS"
},
{
"name":"ForgotPasswordPage \u2014 rendering never calls redirect \u2014 no guard on step 1",
"status":"PASS"
},
{
"name":"VerifyOtpPage \u2014 cookie guard redirects redirects to /forgot-password when the fp_otp_token cookie is absent",
"status":"PASS"
},
{
"name":"VerifyOtpPage \u2014 cookie guard redirects redirects to /forgot-password when fp_otp_token.value is an empty string",
"status":"PASS"
},
{
"name":"VerifyOtpPage \u2014 cookie guard redirects does not render VerifyOtpForm when the guard redirects",
"status":"PASS"
},
{
"name":"VerifyOtpPage \u2014 renders form when token is present renders VerifyOtpForm and does not redirect when fp_otp_token is set",
"status":"PASS"
},
{
"name":"VerifyOtpPage \u2014 renders form when token is present reads the fp_otp_token cookie by name",
"status":"PASS"
},
{
"name":"ResetPasswordPage \u2014 cookie guard redirects redirects to /forgot-password when the fp_reset_token cookie is absent",
"status":"PASS"
},
{
"name":"ResetPasswordPage \u2014 cookie guard redirects redirects to /forgot-password when fp_reset_token.value is an empty string",
"status":"PASS"
},
{
"name":"ResetPasswordPage \u2014 cookie guard redirects does not render ResetPasswordForm when the guard redirects",
"status":"PASS"
},
{
"name":"ResetPasswordPage \u2014 renders form when token is present renders ResetPasswordForm and does not redirect when fp_reset_token is set",
"status":"PASS"
},
{
"name":"ResetPasswordPage \u2014 renders form when token is present reads the fp_reset_token cookie by name",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering renders the Reset Password heading",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering renders New Password and Re-enter Password fields",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering renders the Save New Password submit button",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering renders the Cancel button",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering does not render a 'Current Password' field (auth variant has no such field)",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering renders the PASSWORD POLICY card with all 5 rules",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 initial rendering renders the Strength meter label",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 submit button enable/disable Save New Password button is disabled with empty passwords",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 submit button enable/disable Save New Password button is disabled when policy is not met",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 submit button enable/disable Save New Password button is disabled when passwords don't match",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 submit button enable/disable Save New Password button is enabled when policy passes and passwords match",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 password mismatch shows a 'Passwords do not match' error when confirmPassword differs from newPassword",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 password mismatch does not show a mismatch error when passwords match",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 password mismatch does not show mismatch error on empty confirm field",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 strength meter does not show a strength label when the password field is empty",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 strength meter shows 'Weak' label when only 1 rule is met",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 strength meter shows 'Strong' label when all 5 rules are met",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 field errors from action state shows newPassword field error from action state",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 field errors from action state shows confirmPassword field error from action state",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 field errors from action state shows generic error message when ok=false, message present, no fieldErrors",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 field errors from action state does not show generic error when fieldErrors is also present",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 Cancel button calls router.push('/login') when Cancel is clicked",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 Server Action wiring binds useFormState to resetPasswordViaOtp with ok=true initial state",
"status":"PASS"
},
{
"name":"ResetPasswordForm (auth) \u2014 Server Action wiring calling the bound action delegates to resetPasswordViaOtp",
"status":"PASS"
},
{
"name":"VerifyOtpForm \u2014 initial rendering renders the Enter Verification Code heading",