chore: sync local latest state and repository cleanup

This commit is contained in:
Your Name
2026-03-23 13:02:36 +08:00
parent f1ff3d629f
commit 2ef0f17961
493 changed files with 46912 additions and 7977 deletions

View File

@@ -3,29 +3,64 @@ import { test, expect } from '@playwright/test';
/**
* 🖱️ 蚊子项目H5前端 - 用户操作测试
* 模拟真实用户在H5界面的查看和操作
*
* 注意H5_BASE_URL必须通过环境变量配置默认值仅供参考
* 使用方式: H5_BASE_URL=http://localhost:5173 npx playwright test
*
* 注意H5与Admin共享同一前端服务(5173)H5路由(/share等)由Admin前端提供
*/
test.describe('👤 用户H5前端操作测试', () => {
const FRONTEND_URL = 'http://localhost:5175';
const API_BASE_URL = 'http://localhost:8080';
const FRONTEND_URL = process.env.H5_BASE_URL || 'http://localhost:5173';
const API_BASE_URL = process.env.API_BASE_URL || 'http://localhost:8080';
/**
* 验证当前页面是否为H5应用而非管理后台
* 通过检查页面特征来识别
*/
const verifyH5Page = async (page: any, expectedPath?: string) => {
const currentUrl = page.url();
// 如果指定了期望路径,验证路径
if (expectedPath && !currentUrl.includes(expectedPath)) {
throw new Error(`页面路径不正确: ${currentUrl},期望包含: ${expectedPath}`);
}
// H5页面特征路径是 / 或 /share 或 /rank 或 /profile
const isH5Path = currentUrl === '/' ||
currentUrl.includes('/share') ||
currentUrl.includes('/rank') ||
currentUrl.includes('/profile');
// 如果不是H5路径抛出错误
if (!isH5Path && !currentUrl.includes('localhost')) {
throw new Error(`E2E目标偏离当前页面 ${currentUrl} 不是H5应用可能跑到了管理前端或其他应用`);
}
console.log(` ✅ H5页面验证通过: ${currentUrl}`);
return true;
};
test('📱 查看首页和底部导航', async ({ page }) => {
await test.step('访问H5首页', async () => {
// 访问首页
const response = await page.goto(FRONTEND_URL);
// 验证页面可访问
expect(response).not.toBeNull();
console.log(' ✅ 首页响应状态:', response?.status());
// 等待页面加载完成
await page.waitForLoadState('networkidle');
// 验证是H5页面而非管理后台
await verifyH5Page(page, '/');
// 截图记录首页
await page.screenshot({
await page.screenshot({
path: 'test-results/h5-user-homepage.png',
fullPage: true
fullPage: true
});
console.log(' 📸 首页截图已保存');
});
@@ -59,7 +94,10 @@ test.describe('👤 用户H5前端操作测试', () => {
await test.step('点击推广页面', async () => {
await page.goto(FRONTEND_URL);
await page.waitForLoadState('networkidle');
// 验证是H5页面
await verifyH5Page(page);
// 查找并点击推广链接
const shareLink = page.locator('text=推广').first();
@@ -146,7 +184,10 @@ test.describe('👤 用户H5前端操作测试', () => {
await page.goto(FRONTEND_URL);
await page.waitForLoadState('networkidle');
// 验证是H5页面
await verifyH5Page(page);
// 截图记录不同设备效果
await page.screenshot({
path: `test-results/h5-responsive-${viewport.name}.png`,
@@ -167,7 +208,10 @@ test.describe('👤 用户H5前端操作测试', () => {
await test.step('检查页面元素', async () => {
await page.goto(FRONTEND_URL);
await page.waitForLoadState('networkidle');
// 验证是H5页面
await verifyH5Page(page);
// 统计页面元素
const buttons = page.locator('button');
const links = page.locator('a');
@@ -204,10 +248,13 @@ test.describe('👤 用户H5前端操作测试', () => {
test('⏱️ 页面性能测试', async ({ page }) => {
await test.step('测量页面加载性能', async () => {
const startTime = Date.now();
await page.goto(FRONTEND_URL);
await page.waitForLoadState('networkidle');
// 验证是H5页面
await verifyH5Page(page);
const loadTime = Date.now() - startTime;
console.log(` ⏱️ 页面加载时间: ${loadTime}ms`);