refactor(e2e): 删除重复的登录测试
- 删除 login-test.spec.ts - 删除 simple-login.spec.ts - 删除 login-stability.spec.ts - 删除 login-diagnostic.spec.ts - 保留 role-based-tests/scenarios/authentication/login-flow.spec.ts 原因:避免测试重复,保留最完整的角色基础登录测试
This commit is contained in:
@@ -1,117 +0,0 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test.describe('登录诊断测试', () => {
|
||||
test('诊断登录流程', async ({ page }) => {
|
||||
console.log('=== 开始诊断登录流程 ===');
|
||||
|
||||
// 导航到登录页面
|
||||
await page.goto('/login');
|
||||
console.log('1. 导航到登录页面');
|
||||
|
||||
// 等待页面加载完成
|
||||
await page.waitForLoadState('networkidle');
|
||||
console.log('2. 页面加载完成');
|
||||
|
||||
// 监听API响应
|
||||
const [response] = await Promise.all([
|
||||
page.waitForResponse(resp =>
|
||||
resp.url().includes('/api/auth/login') &&
|
||||
resp.request().method() === 'POST',
|
||||
{ timeout: 15000 }
|
||||
).catch(err => {
|
||||
console.log(' ❌ 等待登录API响应超时:', err.message);
|
||||
return null;
|
||||
}),
|
||||
(async () => {
|
||||
// 填写登录表单
|
||||
await page.fill('input[placeholder="请输入用户名"]', 'admin');
|
||||
console.log('3. 填写用户名: admin');
|
||||
|
||||
await page.fill('input[placeholder="请输入密码"]', 'admin123');
|
||||
console.log('4. 填写密码: admin123');
|
||||
|
||||
// 点击登录按钮
|
||||
await page.click('button:has-text("登录")');
|
||||
console.log('5. 点击登录按钮');
|
||||
})()
|
||||
]);
|
||||
|
||||
if (response) {
|
||||
console.log(' ✅ 捕获到登录API响应');
|
||||
console.log(' - 状态码:', response.status());
|
||||
console.log(' - URL:', response.url());
|
||||
|
||||
try {
|
||||
const responseBody = await response.json();
|
||||
console.log(' - 响应体:', JSON.stringify(responseBody, null, 2));
|
||||
|
||||
// 检查响应格式
|
||||
if (responseBody.token) {
|
||||
console.log(' ✅ 响应包含token');
|
||||
} else {
|
||||
console.log(' ❌ 响应不包含token');
|
||||
}
|
||||
|
||||
if (responseBody.userId) {
|
||||
console.log(' ✅ 响应包含userId:', responseBody.userId);
|
||||
} else {
|
||||
console.log(' ⚠️ 响应不包含userId');
|
||||
}
|
||||
|
||||
if (responseBody.username) {
|
||||
console.log(' ✅ 响应包含username:', responseBody.username);
|
||||
} else {
|
||||
console.log(' ⚠️ 响应不包含username');
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(' ❌ 无法解析响应体:', err.message);
|
||||
}
|
||||
} else {
|
||||
console.log(' ❌ 没有捕获到登录API响应');
|
||||
}
|
||||
|
||||
// 等待一段时间,观察页面变化
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
// 检查当前URL
|
||||
const currentUrl = page.url();
|
||||
console.log('6. 当前URL:', currentUrl);
|
||||
|
||||
// 检查localStorage中的token
|
||||
const token = await page.evaluate(() => localStorage.getItem('token'));
|
||||
console.log('7. Token in localStorage:', token ? '✅ 存在' : '❌ 不存在');
|
||||
if (token) {
|
||||
console.log(' - Token前20字符:', token.substring(0, 20));
|
||||
}
|
||||
|
||||
// 检查localStorage中的userId
|
||||
const userId = await page.evaluate(() => localStorage.getItem('userId'));
|
||||
console.log('8. UserId in localStorage:', userId || '❌ 不存在');
|
||||
|
||||
// 检查localStorage中的username
|
||||
const username = await page.evaluate(() => localStorage.getItem('username'));
|
||||
console.log('9. Username in localStorage:', username || '❌ 不存在');
|
||||
|
||||
// 检查是否有错误消息
|
||||
const errorMessages = await page.locator('.el-message--error').allTextContents();
|
||||
if (errorMessages.length > 0) {
|
||||
console.log(' ⚠️ 发现错误消息:', errorMessages);
|
||||
}
|
||||
|
||||
// 检查成功消息
|
||||
const successMessages = await page.locator('.el-message--success').allTextContents();
|
||||
if (successMessages.length > 0) {
|
||||
console.log(' ✅ 发现成功消息:', successMessages);
|
||||
}
|
||||
|
||||
// 截图
|
||||
await page.screenshot({ path: `test-results/login-diagnostic-${Date.now()}.png` });
|
||||
console.log('10. 截图已保存');
|
||||
|
||||
console.log('=== 诊断完成 ===');
|
||||
|
||||
// 验证登录是否成功
|
||||
expect(token).toBeTruthy();
|
||||
expect(currentUrl).not.toContain('/login');
|
||||
});
|
||||
});
|
||||
@@ -1,35 +0,0 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { LoginPage } from './pages/LoginPage';
|
||||
|
||||
test.describe('登录稳定性测试', () => {
|
||||
let loginPage: LoginPage;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
loginPage = new LoginPage(page);
|
||||
|
||||
// 确保页面已经导航到正确的URL,避免localStorage访问错误
|
||||
await page.goto('/');
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
});
|
||||
|
||||
// 连续执行10次登录测试,验证稳定性
|
||||
for (let i = 1; i <= 10; i++) {
|
||||
test(`登录测试 #${i}`, async ({ page }) => {
|
||||
console.log(`=== 开始登录测试 #${i} ===`);
|
||||
|
||||
await loginPage.goto();
|
||||
await loginPage.login('admin', 'admin123');
|
||||
|
||||
const currentUrl = page.url();
|
||||
console.log(`测试 #${i} - 当前URL:`, currentUrl);
|
||||
|
||||
const token = await page.evaluate(() => localStorage.getItem('token'));
|
||||
console.log(`测试 #${i} - Token:`, token ? '存在' : '不存在');
|
||||
|
||||
expect(currentUrl).not.toContain('/login');
|
||||
expect(token).toBeTruthy();
|
||||
|
||||
console.log(`✅ 测试 #${i} 通过\n`);
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1,34 +0,0 @@
|
||||
import { test, expect } from '@playwright/test'
|
||||
|
||||
test.describe('登录签名测试', () => {
|
||||
test('登录功能应该正常工作', async ({ page }) => {
|
||||
page.on('console', msg => {
|
||||
console.log('BROWSER CONSOLE:', msg.type(), msg.text())
|
||||
})
|
||||
|
||||
page.on('pageerror', error => {
|
||||
console.error('PAGE ERROR:', error.message)
|
||||
})
|
||||
|
||||
page.on('requestfailed', request => {
|
||||
console.error('REQUEST FAILED:', request.url(), request.failure()?.errorText)
|
||||
})
|
||||
|
||||
await page.goto('/login')
|
||||
|
||||
await page.fill('input[placeholder="请输入用户名"]', 'admin')
|
||||
await page.fill('input[placeholder="请输入密码"]', 'admin123')
|
||||
|
||||
await page.click('button:has-text("登录")')
|
||||
|
||||
await page.waitForURL('**/dashboard', { timeout: 10000 })
|
||||
|
||||
console.log('Current URL after login:', page.url())
|
||||
|
||||
const token = await page.evaluate(() => localStorage.getItem('token'))
|
||||
console.log('Token in localStorage:', token ? 'exists' : 'not found')
|
||||
|
||||
expect(page.url()).toContain('/dashboard')
|
||||
expect(token).toBeTruthy()
|
||||
})
|
||||
})
|
||||
@@ -1,50 +0,0 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { LoginPage } from './pages/LoginPage';
|
||||
import { DashboardPage } from './pages/DashboardPage';
|
||||
import { UserManagementPage } from './pages/UserManagementPage';
|
||||
|
||||
test.describe('简单登录测试', () => {
|
||||
let loginPage: LoginPage;
|
||||
let dashboardPage: DashboardPage;
|
||||
let userManagementPage: UserManagementPage;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
loginPage = new LoginPage(page);
|
||||
dashboardPage = new DashboardPage(page);
|
||||
userManagementPage = new UserManagementPage(page);
|
||||
|
||||
// 清理localStorage
|
||||
await page.goto('/');
|
||||
await page.evaluate(() => localStorage.clear());
|
||||
|
||||
// 重新登录
|
||||
await loginPage.goto();
|
||||
await loginPage.login('e2e_test_user', 'admin123');
|
||||
});
|
||||
|
||||
test('登录后导航到用户管理页面', async ({ page }) => {
|
||||
await dashboardPage.navigateToUserManagement();
|
||||
await expect(page).toHaveURL(/.*users/);
|
||||
|
||||
// 验证表格存在
|
||||
await expect(userManagementPage.table).toBeVisible();
|
||||
|
||||
// 验证"新增用户"按钮存在
|
||||
await expect(userManagementPage.createUserButton).toBeVisible();
|
||||
});
|
||||
|
||||
test('点击新增用户按钮', async ({ page }) => {
|
||||
await dashboardPage.navigateToUserManagement();
|
||||
|
||||
// 点击新增用户按钮
|
||||
await userManagementPage.clickCreateUser();
|
||||
|
||||
// 验证对话框出现
|
||||
const dialog = page.locator('.el-dialog');
|
||||
await expect(dialog).toBeVisible();
|
||||
|
||||
// 验证对话框标题
|
||||
const dialogTitle = dialog.locator('.el-dialog__title');
|
||||
await expect(dialogTitle).toContainText('新增用户');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user