test: 补充 Phase 3 专项测试并更新测试报告
新增性能基准测试、安全验证、国际化完整性验证等专项测试; 修复 E2E 测试选择器与当前 UI 不匹配问题; 补充多语言 locale 缺失的 key; 更新 Playwright 配置支持跨浏览器测试; 同步更新测试报告与 README 进度章节。 单元测试 408/408 通过,E2E 测试 39/39 通过(4 种浏览器), 专项测试 47/47 通过,整体覆盖率 77.5%。
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import { test, expect } from '@playwright/test'
|
||||
|
||||
test.describe('页面加载性能测试', () => {
|
||||
test.describe('TC-PERF-E2E-001: 黄历搜索页面加载', () => {
|
||||
test('页面首次加载时间应 < 3s', async ({ page }) => {
|
||||
const startTime = Date.now()
|
||||
await page.goto('/#/pages/almanac-search/index')
|
||||
await page.waitForLoadState('networkidle')
|
||||
await page.waitForTimeout(500)
|
||||
const loadTime = Date.now() - startTime
|
||||
|
||||
// 验证页面加载完成
|
||||
const pageContent = page.locator('.page-content')
|
||||
await expect(pageContent).toBeVisible({ timeout: 5000 })
|
||||
expect(loadTime).toBeLessThan(3000)
|
||||
})
|
||||
})
|
||||
|
||||
test.describe('TC-PERF-E2E-002: 紫微斗数页面加载', () => {
|
||||
test('页面首次加载时间应 < 3s', async ({ page }) => {
|
||||
const startTime = Date.now()
|
||||
await page.goto('/#/pages/ziwei/index')
|
||||
await page.waitForLoadState('networkidle')
|
||||
await page.waitForTimeout(500)
|
||||
const loadTime = Date.now() - startTime
|
||||
|
||||
const sectionTitle = page.locator('.section-title').first()
|
||||
await expect(sectionTitle).toBeVisible({ timeout: 5000 })
|
||||
expect(loadTime).toBeLessThan(3000)
|
||||
})
|
||||
})
|
||||
|
||||
test.describe('TC-PERF-E2E-003: 运势分析页面加载', () => {
|
||||
test('页面首次加载时间应 < 3s', async ({ page }) => {
|
||||
const startTime = Date.now()
|
||||
await page.goto('/#/pages/fortune/index')
|
||||
await page.waitForLoadState('networkidle')
|
||||
await page.waitForTimeout(500)
|
||||
const loadTime = Date.now() - startTime
|
||||
|
||||
const tabs = page.locator('[data-test="fortune-tabs"]')
|
||||
await expect(tabs).toBeVisible({ timeout: 5000 })
|
||||
expect(loadTime).toBeLessThan(3000)
|
||||
})
|
||||
})
|
||||
|
||||
test.describe('TC-PERF-E2E-004: 响应式性能', () => {
|
||||
test('移动端 375px 视口加载正常', async ({ page }) => {
|
||||
await page.setViewportSize({ width: 375, height: 667 })
|
||||
const startTime = Date.now()
|
||||
await page.goto('/#/pages/almanac-search/index')
|
||||
await page.waitForLoadState('networkidle')
|
||||
await page.waitForTimeout(500)
|
||||
const loadTime = Date.now() - startTime
|
||||
|
||||
const pageContent = page.locator('.page-content')
|
||||
await expect(pageContent).toBeVisible({ timeout: 5000 })
|
||||
expect(loadTime).toBeLessThan(3000)
|
||||
})
|
||||
|
||||
test('平板 768px 视口加载正常', async ({ page }) => {
|
||||
await page.setViewportSize({ width: 768, height: 1024 })
|
||||
const startTime = Date.now()
|
||||
await page.goto('/#/pages/almanac-search/index')
|
||||
await page.waitForLoadState('networkidle')
|
||||
await page.waitForTimeout(500)
|
||||
const loadTime = Date.now() - startTime
|
||||
|
||||
const pageContent = page.locator('.page-content')
|
||||
await expect(pageContent).toBeVisible({ timeout: 5000 })
|
||||
expect(loadTime).toBeLessThan(3000)
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user