import { test, expect } from '@playwright/test'; import { LoginPage } from './pages/LoginPage'; import { UserManagementPage } from './pages/UserManagementPage'; test.describe('集成测试诊断', () => { let loginPage: LoginPage; let userManagementPage: UserManagementPage; test.beforeEach(async ({ page }) => { loginPage = new LoginPage(page); userManagementPage = new UserManagementPage(page); // 确保页面已经导航到正确的URL,避免localStorage访问错误 await page.goto('/'); await page.waitForLoadState('domcontentloaded'); }); test('测试1: 登录并查询用户列表', async ({ page }) => { console.log('=== 测试1: 登录并查询用户列表 ==='); await loginPage.goto(); await loginPage.login('admin', 'admin123'); const currentUrl = page.url(); console.log('当前URL:', currentUrl); const token = await page.evaluate(() => localStorage.getItem('token')); console.log('Token:', token ? '存在' : '不存在'); await userManagementPage.goto(); await userManagementPage.waitForTableReady(); const userCount = await userManagementPage.getUserCount(); console.log('用户数量:', userCount); expect(userCount).toBeGreaterThan(0); console.log('✅ 测试1通过\n'); }); test('测试2: 再次登录并创建用户', async ({ page }) => { console.log('=== 测试2: 再次登录并创建用户 ==='); // 检查localStorage状态 const tokenBefore = await page.evaluate(() => localStorage.getItem('token')); console.log('测试前Token:', tokenBefore ? '存在' : '不存在'); await loginPage.goto(); console.log('导航到登录页面'); const urlAfterGoto = page.url(); console.log('导航后URL:', urlAfterGoto); // 如果已经有token,应该会自动跳转 if (tokenBefore) { console.log('检测到已有token,等待自动跳转...'); await page.waitForTimeout(3000); const urlAfterWait = page.url(); console.log('等待后URL:', urlAfterWait); } await loginPage.login('admin', 'admin123'); const currentUrl = page.url(); console.log('登录后URL:', currentUrl); const tokenAfter = await page.evaluate(() => localStorage.getItem('token')); console.log('登录后Token:', tokenAfter ? '存在' : '不存在'); await userManagementPage.goto(); await userManagementPage.waitForTableReady(); const uuid = Math.random().toString(36).substring(2, 15); const username = `test_${uuid}`; await userManagementPage.clickCreateUser(); await userManagementPage.fillUserForm({ username: username, password: 'admin123', email: `${username}@test.com`, phone: '13800138000', nickname: `测试用户${Date.now()}` }); await userManagementPage.submitForm(); const success = await userManagementPage.waitForSuccessMessage(); console.log('创建用户:', success ? '成功' : '失败'); expect(success).toBeTruthy(); console.log('✅ 测试2通过\n'); }); test('测试3: 第三次登录', async ({ page }) => { console.log('=== 测试3: 第三次登录 ==='); const tokenBefore = await page.evaluate(() => localStorage.getItem('token')); console.log('测试前Token:', tokenBefore ? '存在' : '不存在'); await loginPage.goto(); await loginPage.login('admin', 'admin123'); const currentUrl = page.url(); console.log('登录后URL:', currentUrl); const tokenAfter = await page.evaluate(() => localStorage.getItem('token')); console.log('登录后Token:', tokenAfter ? '存在' : '不存在'); expect(currentUrl).not.toContain('/login'); console.log('✅ 测试3通过\n'); }); });