diff --git a/oxlint-suppressions.json b/oxlint-suppressions.json
index e0e68e08639..569d77074ee 100644
--- a/oxlint-suppressions.json
+++ b/oxlint-suppressions.json
@@ -5194,11 +5194,6 @@
"count": 1
}
},
- "web/app/signup/set-password/page.tsx": {
- "no-restricted-imports": {
- "count": 1
- }
- },
"web/context/hooks/use-trigger-events-limit-modal.ts": {
"eslint-react/set-state-in-effect": {
"count": 3
diff --git a/web/app/signup/set-password/__tests__/page.spec.tsx b/web/app/signup/set-password/__tests__/page.spec.tsx
index 50021c10254..02bff2877f0 100644
--- a/web/app/signup/set-password/__tests__/page.spec.tsx
+++ b/web/app/signup/set-password/__tests__/page.spec.tsx
@@ -2,6 +2,7 @@ import type { ReactElement } from 'react'
import type { MockedFunction } from 'vite-plus/test'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
+import userEvent from '@testing-library/user-event'
import Cookies from 'js-cookie'
import { beforeEach, describe, expect, it, vi } from 'vite-plus/test'
import { useLocale } from '@/context/i18n'
@@ -100,15 +101,17 @@ describe('Signup Set Password Page', () => {
describe('Registration payload', () => {
it('should submit locale and browser timezone when setting password', async () => {
+ const user = userEvent.setup()
renderWithQueryClient()
- fireEvent.change(screen.getByLabelText('common.account.newPassword'), {
- target: { value: 'ValidPass123!' },
- })
- fireEvent.change(screen.getByLabelText('common.account.confirmPassword'), {
- target: { value: 'ValidPass123!' },
- })
- fireEvent.click(screen.getByRole('button', { name: 'login.changePasswordBtn' }))
+ const passwordInput = screen.getByLabelText('common.account.newPassword')
+ const confirmPasswordInput = screen.getByLabelText('common.account.confirmPassword')
+
+ expect(passwordInput).toHaveAttribute('autocomplete', 'new-password')
+ expect(confirmPasswordInput).toHaveAttribute('autocomplete', 'new-password')
+
+ await user.type(passwordInput, 'ValidPass123!')
+ await user.type(confirmPasswordInput, 'ValidPass123!{Enter}')
await waitFor(() => {
expect(mockRegister).toHaveBeenCalledWith({
diff --git a/web/app/signup/set-password/page.tsx b/web/app/signup/set-password/page.tsx
index 30ec554db3e..c9d9d07992c 100644
--- a/web/app/signup/set-password/page.tsx
+++ b/web/app/signup/set-password/page.tsx
@@ -2,13 +2,15 @@
import type { MailRegisterResponse } from '@/service/use-common'
import { Button } from '@langgenius/dify-ui/button'
import { cn } from '@langgenius/dify-ui/cn'
+import { Field, FieldDescription, FieldLabel } from '@langgenius/dify-ui/field'
+import { Form } from '@langgenius/dify-ui/form'
+import { Input } from '@langgenius/dify-ui/input'
import { toast } from '@langgenius/dify-ui/toast'
import { useQueryClient } from '@tanstack/react-query'
import Cookies from 'js-cookie'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { rememberRegistrationSuccess } from '@/app/components/base/amplitude/registration-tracking'
-import Input from '@/app/components/base/input'
import { resolvePostLoginRedirect } from '@/app/signin/utils/post-login-redirect'
import { validPassword } from '@/config'
import { useLocale } from '@/context/i18n'
@@ -125,54 +127,45 @@ const ChangePasswordForm = () => {
-
- {/* Password */}
-
-
-
- setPassword(e.target.value)}
- placeholder={t(($) => $.passwordPlaceholder, { ns: 'login' }) || ''}
- />
-
-
+
+ $.passwordPlaceholder, { ns: 'login' }) || ''}
+ />
+
{t(($) => $['error.passwordInvalid'], { ns: 'login' })}
-
-
- {/* Confirm Password */}
-
-
-
- setConfirmPassword(e.target.value)}
- placeholder={t(($) => $.confirmPasswordPlaceholder, { ns: 'login' }) || ''}
- />
-
-
-
-
-
-
+
+
$.confirmPasswordPlaceholder, { ns: 'login' }) || ''}
+ />
+
+
+