test(e2e): add GA4 tracking, mobile, user journey tests and update visual baselines

- Add GA4 event tracking E2E tests (4 cases: page view, form submit, button click, product page)
- Add mobile-specific E2E tests (16 cases: navigation, form, product browsing)
- Add user journey tests (UJ-01: homepage to contact, UJ-02: product discovery)
- Fix E2E test selectors and assertions for consistency
- Update visual regression baselines across all browsers (chromium/firefox/webkit)
- Update Playwright config for new test files
This commit is contained in:
2026-07-31 20:24:57 +08:00
parent dd088a5ee1
commit 3e629bd9ee
27 changed files with 964 additions and 58 deletions
+16 -16
View File
@@ -24,7 +24,7 @@ import { test, expect } from '@playwright/test';
test.setTimeout(60000);
// ==================== 1. 首页功能测试 ====================
test.describe('首页 - 核心功能区', () => {
test.describe('首页 - 核心功能区', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -32,9 +32,9 @@ test.describe('首页 - 核心功能区', () => {
});
test('Hero区域正确显示', async ({ page }) => {
// 检查主标题
// 检查主标题Framer Motion 入场动画初始 opacity:0,需等待动画完成)
const heroTitle = page.locator('h1').first();
await expect(heroTitle).toBeVisible();
await expect(heroTitle).toBeVisible({ timeout: 15000 });
const titleText = await heroTitle.textContent();
expect(titleText).toBeTruthy();
expect(titleText!.length).toBeGreaterThan(0);
@@ -87,7 +87,7 @@ test.describe('首页 - 核心功能区', () => {
});
// ==================== 2. 导航与路由测试 ====================
test.describe('导航系统 - 路由与菜单', () => {
test.describe('导航系统 - 路由与菜单', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -143,7 +143,7 @@ test.describe('导航系统 - 路由与菜单', () => {
});
// ==================== 3. 产品中心测试 ====================
test.describe('产品中心 - 页面功能', () => {
test.describe('产品中心 - 页面功能', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/products', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -189,7 +189,7 @@ test.describe('产品中心 - 页面功能', () => {
});
// ==================== 4. 解决方案测试 ====================
test.describe('解决方案 - 行业方案展示', () => {
test.describe('解决方案 - 行业方案展示', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/solutions', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -226,7 +226,7 @@ test.describe('解决方案 - 行业方案展示', () => {
});
// ==================== 5. 服务介绍测试 ====================
test.describe('服务介绍 - 服务内容展示', () => {
test.describe('服务介绍 - 服务内容展示', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/services', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -260,7 +260,7 @@ test.describe('服务介绍 - 服务内容展示', () => {
});
// ==================== 6. 关于我们测试 ====================
test.describe('关于我们 - 公司信息展示', () => {
test.describe('关于我们 - 公司信息展示', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/about', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -297,7 +297,7 @@ test.describe('关于我们 - 公司信息展示', () => {
});
// ==================== 7. 联系我们表单测试 ====================
test.describe('联系我们 - 表单交互', () => {
test.describe('联系我们 - 表单交互', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/contact', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -388,7 +388,7 @@ test.describe('联系我们 - 表单交互', () => {
});
// ==================== 8. 新闻动态测试 ====================
test.describe('新闻动态 - 内容展示', () => {
test.describe('新闻动态 - 内容展示', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/news', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -416,7 +416,7 @@ test.describe('新闻动态 - 内容展示', () => {
});
// ==================== 9. 团队介绍测试 ====================
test.describe('团队介绍 - 成员展示', () => {
test.describe('团队介绍 - 成员展示', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/team', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -441,7 +441,7 @@ test.describe('团队介绍 - 成员展示', () => {
});
// ==================== 10. 法律页面测试 ====================
test.describe('法律页面 - 隐私政策与服务条款', () => {
test.describe('法律页面 - 隐私政策与服务条款', { tag: '@regression' }, () => {
test('隐私政策页面内容完整', async ({ page }) => {
await page.goto('/privacy', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -477,7 +477,7 @@ test.describe('法律页面 - 隐私政策与服务条款', () => {
});
// ==================== 11. 响应式布局测试 ====================
test.describe('响应式设计 - 多设备适配', () => {
test.describe('响应式设计 - 多设备适配', { tag: '@regression' }, () => {
test('桌面端布局正常', async ({ page }) => {
await page.setViewportSize({ width: 1280, height: 800 });
@@ -545,7 +545,7 @@ test.describe('响应式设计 - 多设备适配', () => {
});
// ==================== 12. 无障碍访问测试 ====================
test.describe('无障碍性 - A11y 基础检查', () => {
test.describe('无障碍性 - A11y 基础检查', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -621,7 +621,7 @@ test.describe('无障碍性 - A11y 基础检查', () => {
});
// ==================== 13. Footer 功能测试 ====================
test.describe('Footer - 全局底部区域', () => {
test.describe('Footer - 全局底部区域', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -698,7 +698,7 @@ test.describe('Footer - 全局底部区域', () => {
});
// ==================== 14. SEO 元数据测试 ====================
test.describe('SEO - 搜索引擎优化基础', () => {
test.describe('SEO - 搜索引擎优化基础', { tag: '@regression' }, () => {
test('首页 Meta Description 存在', async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });