From 477e428e95aabba5d596b6eba664b55e83c02d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Tue, 7 Apr 2026 08:15:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(e2e):=20=E5=88=A0=E9=99=A4=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=9A=84=E7=99=BB=E5=BD=95=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 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 原因:避免测试重复,保留最完整的角色基础登录测试 --- .../e2e/login-diagnostic.spec.ts | 117 ------------------ .../e2e/login-stability.spec.ts | 35 ------ novalon-manage-web/e2e/login-test.spec.ts | 34 ----- novalon-manage-web/e2e/simple-login.spec.ts | 50 -------- 4 files changed, 236 deletions(-) delete mode 100644 novalon-manage-web/e2e/login-diagnostic.spec.ts delete mode 100644 novalon-manage-web/e2e/login-stability.spec.ts delete mode 100644 novalon-manage-web/e2e/login-test.spec.ts delete mode 100644 novalon-manage-web/e2e/simple-login.spec.ts diff --git a/novalon-manage-web/e2e/login-diagnostic.spec.ts b/novalon-manage-web/e2e/login-diagnostic.spec.ts deleted file mode 100644 index c7e2d08..0000000 --- a/novalon-manage-web/e2e/login-diagnostic.spec.ts +++ /dev/null @@ -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'); - }); -}); diff --git a/novalon-manage-web/e2e/login-stability.spec.ts b/novalon-manage-web/e2e/login-stability.spec.ts deleted file mode 100644 index c4400bf..0000000 --- a/novalon-manage-web/e2e/login-stability.spec.ts +++ /dev/null @@ -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`); - }); - } -}); diff --git a/novalon-manage-web/e2e/login-test.spec.ts b/novalon-manage-web/e2e/login-test.spec.ts deleted file mode 100644 index c917492..0000000 --- a/novalon-manage-web/e2e/login-test.spec.ts +++ /dev/null @@ -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() - }) -}) diff --git a/novalon-manage-web/e2e/simple-login.spec.ts b/novalon-manage-web/e2e/simple-login.spec.ts deleted file mode 100644 index d173875..0000000 --- a/novalon-manage-web/e2e/simple-login.spec.ts +++ /dev/null @@ -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('新增用户'); - }); -});