From 37b829716bc9732af8969eb16a10fb1abf9151eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Tue, 7 Apr 2026 08:15:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor(e2e):=20=E5=88=A0=E9=99=A4=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E6=80=A7=E6=B5=8B=E8=AF=95=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 diagnostic-test.spec.ts - 删除 integration-diagnostic.spec.ts - 删除 user-create-diagnostic.spec.ts - 删除 user-create-diagnostic-v2.spec.ts - 删除 debug-network.spec.ts 原因:这些文件是临时调试文件,不应包含在生产测试套件中 --- novalon-manage-web/e2e/debug-network.spec.ts | 72 ---------- .../e2e/diagnostic-test.spec.ts | 79 ----------- .../e2e/integration-diagnostic.spec.ts | 110 -------------- .../e2e/user-create-diagnostic-v2.spec.ts | 108 -------------- .../e2e/user-create-diagnostic.spec.ts | 134 ------------------ 5 files changed, 503 deletions(-) delete mode 100644 novalon-manage-web/e2e/debug-network.spec.ts delete mode 100644 novalon-manage-web/e2e/diagnostic-test.spec.ts delete mode 100644 novalon-manage-web/e2e/integration-diagnostic.spec.ts delete mode 100644 novalon-manage-web/e2e/user-create-diagnostic-v2.spec.ts delete mode 100644 novalon-manage-web/e2e/user-create-diagnostic.spec.ts diff --git a/novalon-manage-web/e2e/debug-network.spec.ts b/novalon-manage-web/e2e/debug-network.spec.ts deleted file mode 100644 index f9b9a04..0000000 --- a/novalon-manage-web/e2e/debug-network.spec.ts +++ /dev/null @@ -1,72 +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); - - // 监控所有网络请求 - page.on('request', request => { - console.log(`>> REQUEST: ${request.method()} ${request.url()}`); - if (request.method() === 'POST' || request.method() === 'PUT') { - console.log(` POST DATA: ${request.postData()}`); - } - }); - - page.on('response', response => { - console.log(`<< RESPONSE: ${response.status()} ${response.url()}`); - if (response.status() >= 400) { - console.log(` ❌ ERROR RESPONSE: ${response.status()} ${response.url()}`); - } - }); - - // 清理localStorage - await page.goto('/'); - await page.evaluate(() => localStorage.clear()); - - // 重新登录 - await loginPage.goto(); - await loginPage.login('e2e_test_user', 'admin123'); - }); - - test('创建用户 - 带网络监控', async ({ page }) => { - console.log('\n========== 开始创建用户测试 ==========\n'); - - await dashboardPage.navigateToUserManagement(); - console.log('✅ 导航到用户管理页面'); - - await userManagementPage.clickCreateUser(); - console.log('✅ 点击创建用户按钮'); - - const timestamp = Date.now(); - const userData = { - username: `testuser_${timestamp}`, - nickname: `测试用户${timestamp}`, - email: `test_${timestamp}@example.com`, - phone: '13800138000', - password: 'Test123!@#', - confirmPassword: 'Test123!@#', - }; - - console.log(`📝 填写用户数据: ${JSON.stringify(userData)}`); - await userManagementPage.fillUserForm(userData); - console.log('✅ 填写用户表单完成'); - - console.log('📤 准备提交表单...'); - await userManagementPage.submitForm(); - console.log('✅ 表单已提交'); - - // 等待一段时间,观察网络请求 - await page.waitForTimeout(5000); - - console.log('\n========== 测试结束 ==========\n'); - }); -}); diff --git a/novalon-manage-web/e2e/diagnostic-test.spec.ts b/novalon-manage-web/e2e/diagnostic-test.spec.ts deleted file mode 100644 index a7962c0..0000000 --- a/novalon-manage-web/e2e/diagnostic-test.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { test, expect } from '@playwright/test'; -import { LoginPage } from './pages/LoginPage'; - -test.describe('登录诊断测试', () => { - test('诊断登录问题', async ({ page }) => { - const loginPage = new LoginPage(page); - - console.log('=== 开始诊断登录问题 ==='); - - await loginPage.goto(); - console.log('1. 登录页面加载成功'); - - await page.screenshot({ path: 'test-results/diagnostic/01-login-page.png', fullPage: true }); - console.log('2. 截图已保存: 01-login-page.png'); - - const usernameVisible = await loginPage.usernameInput.isVisible(); - const passwordVisible = await loginPage.passwordInput.isVisible(); - const loginButtonVisible = await loginPage.loginButton.isVisible(); - - console.log('3. 页面元素检查:'); - console.log(` - 用户名输入框: ${usernameVisible ? '可见' : '不可见'}`); - console.log(` - 密码输入框: ${passwordVisible ? '可见' : '不可见'}`); - console.log(` - 登录按钮: ${loginButtonVisible ? '可见' : '不可见'}`); - - await loginPage.usernameInput.fill('admin'); - await loginPage.passwordInput.fill('admin123'); - console.log('4. 已填写用户名和密码'); - - await page.screenshot({ path: 'test-results/diagnostic/02-filled-form.png', fullPage: true }); - console.log('5. 截图已保存: 02-filled-form.png'); - - const responsePromise = page.waitForResponse(response => - response.url().includes('/api/auth/login') && response.request().method() === 'POST' - ); - - await loginPage.loginButton.click(); - console.log('6. 已点击登录按钮'); - - try { - const response = await responsePromise; - console.log('7. 收到API响应:'); - console.log(` - 状态码: ${response.status()}`); - console.log(` - URL: ${response.url()}`); - - const responseBody = await response.text(); - console.log(` - 响应体: ${responseBody.substring(0, 500)}`); - } catch (error) { - console.log('7. 未收到API响应或超时:', error); - } - - await page.waitForTimeout(3000); - - const currentUrl = page.url(); - console.log(`8. 当前URL: ${currentUrl}`); - - await page.screenshot({ path: 'test-results/diagnostic/03-after-login.png', fullPage: true }); - console.log('9. 截图已保存: 03-after-login.png'); - - const errorMessage = await loginPage.getErrorMessage(); - if (errorMessage) { - console.log(`10. 错误消息: ${errorMessage}`); - } else { - console.log('10. 没有错误消息'); - } - - const pageContent = await page.content(); - console.log('11. 页面内容长度:', pageContent.length); - - if (currentUrl.includes('dashboard')) { - console.log('✅ 登录成功!已跳转到仪表板'); - } else if (currentUrl.includes('login')) { - console.log('❌ 登录失败!仍在登录页面'); - } else { - console.log(`⚠️ 意外的URL: ${currentUrl}`); - } - - console.log('=== 诊断完成 ==='); - }); -}); diff --git a/novalon-manage-web/e2e/integration-diagnostic.spec.ts b/novalon-manage-web/e2e/integration-diagnostic.spec.ts deleted file mode 100644 index 65f5060..0000000 --- a/novalon-manage-web/e2e/integration-diagnostic.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -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'); - }); -}); diff --git a/novalon-manage-web/e2e/user-create-diagnostic-v2.spec.ts b/novalon-manage-web/e2e/user-create-diagnostic-v2.spec.ts deleted file mode 100644 index deaeacd..0000000 --- a/novalon-manage-web/e2e/user-create-diagnostic-v2.spec.ts +++ /dev/null @@ -1,108 +0,0 @@ -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); - }); - - test('诊断用户创建流程', async ({ page }) => { - console.log('=== 开始诊断用户创建流程 ==='); - - // 登录 - await loginPage.goto(); - await loginPage.login('admin', 'admin123'); - console.log('1. 登录成功'); - - // 导航到用户管理页面 - await userManagementPage.goto(); - await userManagementPage.waitForTableReady(); - console.log('2. 导航到用户管理页面成功'); - - // 点击新增用户按钮 - await userManagementPage.clickCreateUser(); - console.log('3. 点击新增用户按钮成功'); - - // 生成唯一用户名 - const uuid = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); - const username = `diag_${uuid}`; - const userData = { - username: username, - password: 'admin123', - email: `${username}@test.com`, - phone: '13800138000', - nickname: `诊断用户${Date.now()}` - }; - - console.log('4. 准备创建用户:', userData); - - // 填写表单 - await userManagementPage.fillUserForm(userData); - console.log('5. 填写表单成功'); - - // 监听API响应 - const [response] = await Promise.all([ - page.waitForResponse(resp => - resp.url().includes('/api/users') && - resp.request().method() === 'POST', - { timeout: 15000 } - ).catch(err => { - console.log(' ❌ 等待API响应超时:', err.message); - return null; - }), - userManagementPage.submitForm() - ]); - - console.log('6. 提交表单'); - - 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)); - } catch (err) { - console.log(' - 无法解析响应体:', err.message); - } - } else { - console.log(' ⚠️ 没有捕获到API响应'); - } - - // 等待成功消息 - const success = await userManagementPage.waitForSuccessMessage(15000); - console.log('7. 等待成功消息:', success ? '✅ 成功' : '❌ 失败'); - - // 检查页面状态 - await page.screenshot({ path: `test-results/diagnostic-after-submit-${Date.now()}.png` }); - console.log('8. 截图已保存'); - - // 检查是否有错误消息 - const errorMessages = await page.locator('.el-message--error').allTextContents(); - if (errorMessages.length > 0) { - console.log(' ⚠️ 发现错误消息:', errorMessages); - } - - // 检查对话框是否关闭 - const dialogVisible = await page.locator('.el-dialog').isVisible(); - console.log('9. 对话框状态:', dialogVisible ? '仍然打开' : '已关闭'); - - // 搜索新创建的用户 - await userManagementPage.search(username); - await page.waitForTimeout(2000); - - const found = await userManagementPage.containsText(username); - console.log('10. 搜索新用户:', found ? '✅ 找到' : '❌ 未找到'); - - console.log('=== 诊断完成 ==='); - - expect(success).toBeTruthy(); - expect(found).toBeTruthy(); - }); -}); diff --git a/novalon-manage-web/e2e/user-create-diagnostic.spec.ts b/novalon-manage-web/e2e/user-create-diagnostic.spec.ts deleted file mode 100644 index c10e43c..0000000 --- a/novalon-manage-web/e2e/user-create-diagnostic.spec.ts +++ /dev/null @@ -1,134 +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); - }); - - test('诊断用户创建流程', async ({ page }) => { - await loginPage.goto(); - await loginPage.login('admin', 'admin123'); - console.log('=== 开始诊断用户创建流程 ==='); - - await page.goto('/users'); - await page.waitForLoadState('networkidle'); - await page.waitForSelector('.el-table', { timeout: 10000 }); - - console.log('1. 导航到用户管理页面成功'); - - await page.click('button:has-text("新增用户")'); - await page.waitForSelector('.el-dialog', { timeout: 5000 }); - - console.log('2. 打开新增用户对话框成功'); - - const timestamp = Date.now(); - const userData = { - username: `testuser_${timestamp}`, - password: 'admin123', - email: `testuser_${timestamp}@test.com`, - phone: '13800138000', - nickname: `测试用户${timestamp}` - }; - - console.log('3. 准备创建用户:', userData); - - const dialog = page.locator('.el-dialog'); - - await dialog.locator('input').first().fill(userData.username); - console.log(' - 填写用户名:', userData.username); - - await dialog.locator('input[type="password"]').fill(userData.password); - console.log(' - 填写密码:', userData.password); - - await dialog.locator('input').nth(2).fill(userData.nickname); - console.log(' - 填写昵称:', userData.nickname); - - await dialog.locator('input').nth(3).fill(userData.email); - console.log(' - 填写邮箱:', userData.email); - - await dialog.locator('input').nth(4).fill(userData.phone); - console.log(' - 填写手机号:', userData.phone); - - await page.screenshot({ path: `test-results/before-submit-${timestamp}.png` }); - console.log('4. 表单填写完成,截图保存'); - - const submitButton = dialog.getByRole('button', { name: '确定' }); - - const [response] = await Promise.all([ - page.waitForResponse(resp => - resp.url().includes('/api/users') && - resp.request().method() === 'POST', - { timeout: 10000 } - ).catch(err => { - console.log(' ❌ 等待API响应超时:', err.message); - return null; - }), - submitButton.click() - ]); - - 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)); - } catch (err) { - console.log(' - 无法解析响应体:', err.message); - } - } else { - console.log(' ⚠️ 没有捕获到API响应'); - } - - await page.waitForTimeout(2000); - - const successMessage = page.locator('.el-message--success'); - const errorMessage = page.locator('.el-message--error'); - const warningMessage = page.locator('.el-message--warning'); - - if (await successMessage.count() > 0) { - const text = await successMessage.first().textContent(); - console.log(' ✅ 成功消息:', text); - } else if (await errorMessage.count() > 0) { - const text = await errorMessage.first().textContent(); - console.log(' ❌ 错误消息:', text); - } else if (await warningMessage.count() > 0) { - const text = await warningMessage.first().textContent(); - console.log(' ⚠️ 警告消息:', text); - } else { - console.log(' ℹ️ 没有显示任何消息'); - } - - await page.screenshot({ path: `test-results/after-submit-${timestamp}.png` }); - console.log('6. 提交后截图保存'); - - const dialogVisible = await dialog.isVisible(); - console.log('7. 对话框是否可见:', dialogVisible); - - if (dialogVisible) { - console.log(' ℹ️ 对话框仍然打开,可能表单验证失败或API返回错误'); - - const formItems = await dialog.locator('.el-form-item').all(); - console.log(' - 表单项数量:', formItems.length); - - for (let i = 0; i < formItems.length; i++) { - const item = formItems[i]; - const errorText = await item.locator('.el-form-item__error').textContent().catch(() => null); - if (errorText) { - const label = await item.locator('.el-form-item__label').textContent(); - console.log(` - 验证错误 [${label}]: ${errorText}`); - } - } - } else { - console.log(' ✅ 对话框已关闭'); - } - - console.log('=== 诊断完成 ==='); - }); -});