import { test, expect } from '../utils/test-setup'; import testUsers from '../../fixtures/test-users.json'; test.describe('用户认证流程', () => { test.beforeEach(async ({ page }) => { await page.goto('/login'); await page.waitForLoadState('networkidle'); }); test('成功登录', async ({ loginPage, dashboardPage }) => { await loginPage.login(testUsers.admin.username, testUsers.admin.password); await dashboardPage.expectToBeVisible(); }); test('登录失败 - 错误密码', async ({ loginPage }) => { await loginPage.login(testUsers.admin.username, 'wrongpassword'); await loginPage.expectLoginError(); }); test('登录失败 - 不存在的用户', async ({ loginPage }) => { await loginPage.login('nonexistent', testUsers.admin.password); await loginPage.expectLoginError(); }); test('导航到注册页面', async ({ loginPage, page }) => { await loginPage.navigateToRegister(); await expect(page).toHaveURL('/register'); }); test('表单验证 - 空用户名', async ({ loginPage }) => { await loginPage.login('', testUsers.admin.password); await expect(loginPage.usernameInput).toHaveClass(/border-destructive/); }); test('表单验证 - 空密码', async ({ loginPage }) => { await loginPage.login(testUsers.admin.username, ''); await expect(loginPage.passwordInput).toHaveClass(/border-destructive/); }); test('记住登录状态', async ({ loginPage, dashboardPage, context }) => { await loginPage.login(testUsers.admin.username, testUsers.admin.password); await dashboardPage.expectToBeVisible(); // 重新打开浏览器验证登录状态保持 const newPage = await context.newPage(); await newPage.goto('/'); await expect(newPage).toHaveURL('/'); }); });