be1c587dbf
- 修复密码哈希格式问题(从$2a$改为$2b$) - 更新所有测试用例密码从Test@123改为admin123 - 修改测试2.3、2.5、2.6,避免操作admin用户(第1行) - 在beforeEach中添加页面初始化,避免localStorage访问错误 - 添加测试数据清理机制
111 lines
3.7 KiB
TypeScript
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');
|
|
});
|
|
});
|