diff --git a/web/src/pages/Login.tsx b/web/src/pages/Login.tsx index 5112982..ef15b8f 100644 --- a/web/src/pages/Login.tsx +++ b/web/src/pages/Login.tsx @@ -49,6 +49,18 @@ export default function Login() {

管理员登录

请输入管理密码以继续

+ + +
diff --git a/web/tests/login.test.tsx b/web/tests/login.test.tsx new file mode 100644 index 0000000..a243851 --- /dev/null +++ b/web/tests/login.test.tsx @@ -0,0 +1,30 @@ +import { describe, expect, it, vi } from 'vitest' +import { render, screen } from '@testing-library/react' +import { MemoryRouter } from 'react-router' +import Login from '../src/pages/Login' + +vi.mock('../src/lib/auth', () => ({ + useAuth: () => ({ login: vi.fn(), authenticated: false }), +})) +vi.mock('../src/features/site', () => ({ + useDocumentTitle: () => {}, +})) + +describe('Login 表单密码管理器适配', () => { + it('暴露隐藏用户名字段与 current-password 自动填充标记', () => { + render( + + + , + ) + + const username = screen.getByLabelText('用户名') as HTMLInputElement + expect(username.type).toBe('text') + expect(username.value).toBe('admin') + expect(username.readOnly).toBe(true) + expect(username.getAttribute('autocomplete')).toBe('username') + + const password = screen.getByLabelText('管理密码') as HTMLInputElement + expect(password.getAttribute('autocomplete')).toBe('current-password') + }) +})