refactor(e2e): 删除诊断性测试文件
- 删除 diagnostic-test.spec.ts - 删除 integration-diagnostic.spec.ts - 删除 user-create-diagnostic.spec.ts - 删除 user-create-diagnostic-v2.spec.ts - 删除 debug-network.spec.ts 原因:这些文件是临时调试文件,不应包含在生产测试套件中
This commit is contained in:
@@ -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');
|
||||
});
|
||||
});
|
||||
@@ -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('=== 诊断完成 ===');
|
||||
});
|
||||
});
|
||||
@@ -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');
|
||||
});
|
||||
});
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
@@ -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('=== 诊断完成 ===');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user