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:
@@ -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 });
|
||||
|
||||
Reference in New Issue
Block a user