Files
novalon-manage-system/novalon-manage-web/e2e/integration-diagnostic.spec.ts
T
张翔 be1c587dbf fix: 修复测试中操作admin用户导致后续测试失败的问题
- 修复密码哈希格式问题(从$2a$改为$2b$)
- 更新所有测试用例密码从Test@123改为admin123
- 修改测试2.3、2.5、2.6,避免操作admin用户(第1行)
- 在beforeEach中添加页面初始化,避免localStorage访问错误
- 添加测试数据清理机制
2026-04-04 13:01:38 +08:00

111 lines
3.7 KiB
TypeScript

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