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
+4 -4
View File
@@ -13,7 +13,7 @@ import { test, expect, type Page } from '@playwright/test';
test.setTimeout(60000);
// ==================== 1. 滚动进度条测试 ====================
test.describe('滚动进度条 - 全局组件行为', () => {
test.describe('滚动进度条 - 全局组件行为', { tag: '@regression' }, () => {
test('页面顶部时进度条缩放为 0', async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -71,7 +71,7 @@ test.describe('滚动进度条 - 全局组件行为', () => {
});
// ==================== 2. 联系表单完整提交流程 ====================
test.describe('联系表单 - 完整成功提交', () => {
test.describe('联系表单 - 完整成功提交', { tag: '@regression' }, () => {
test.beforeEach(async ({ page }) => {
await page.goto('/contact', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -175,7 +175,7 @@ test.describe('联系表单 - 完整成功提交', () => {
});
// ==================== 3. 完整用户路径 ====================
test.describe('关键用户路径 - 首页 → 产品 → 详情', () => {
test.describe('关键用户路径 - 首页 → 产品 → 详情', { tag: ['@smoke', '@regression'] }, () => {
test('从首页导航到产品列表页', async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30000 });
@@ -238,7 +238,7 @@ test.describe('关键用户路径 - 首页 → 产品 → 详情', () => {
});
// ==================== 4. 服务详情页滚动进度条 ====================
test.describe('服务详情页 - 滚动进度条', () => {
test.describe('服务详情页 - 滚动进度条', { tag: '@regression' }, () => {
test('服务详情页存在滚动进度条', async ({ page }) => {
await page.goto('/services', { waitUntil: 'domcontentloaded', timeout: 30000 });