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')
+ })
+})