- Fix list-to-detail navigation on product/service/solution/case pages - Fix soft 404 on service detail by removing (marketing)/loading.tsx and using force-dynamic - Fix contact form submission feedback and news placeholder image handling - Unify SSR/client authentication state in auth.ts - Add "新闻动态" to main navigation - Fix Playwright storageState path and Firefox footer link flakiness - Add E2E coverage for nav dropdown, cases filter and auth token parsing - Update visual regression baselines (desktop/tablet/mobile, chromium/webkit/firefox) - Update README, lessons-learned and add REGRESSION_REPORT_2026-07-27.md - Ignore .lighthouseci/ and heading-hierarchy-report.json
4.5 KiB
4.5 KiB
全量回归测试报告 — 2026-07-27
1. 回归目标
在完成 dogfood 系统性深度测试及问题修复后,执行全量回归验证,确认:
- 所有 dogfood 修复未引入新回归。
- 质量门禁(类型检查、Lint、单元测试、E2E、视觉回归)全部通过。
- 配置与测试代码中的隐式缺陷被识别并修复。
2. 测试范围
| 类别 | 覆盖内容 |
|---|---|
| 静态门禁 | TypeScript 类型检查、ESLint |
| 单元测试 | Jest,覆盖 src/**/*.test.{ts,tsx} |
| E2E 功能测试 | Playwright:首页、产品、方案、服务、案例、新闻、团队、关于、联系、法律页、导航、表单、404、SEO、A11y、性能、兼容性、边界场景 |
| CMS 工作流测试 | Playwright:管理员发布、非法状态拦截、多角色权限分离 |
| 视觉回归测试 | Playwright:desktop / tablet / mobile / firefox / webkit 全页面与组件截图对比 |
3. 执行环境
- 日期:2026-07-27
- 分支:当前工作区(基于
10404db之后的 dogfood 修复集合) - Node.js:v22.23.1
- Next.js:16.2.11
- Playwright:1.58.2
- 浏览器:Chromium / Firefox / WebKit
4. 执行结果
4.1 静态门禁
| 检查项 | 命令 | 结果 |
|---|---|---|
| 类型检查 | npm run type-check |
✅ 通过(无错误) |
| 代码风格 | npm run lint |
✅ 通过(0 errors,172 既有 warnings) |
4.2 单元测试
| 检查项 | 命令 | 结果 |
|---|---|---|
| 单元测试 | npm run test:unit |
✅ 72 suites / 954 tests 全部通过 |
4.3 E2E 全量测试
| 检查项 | 命令 | 结果 |
|---|---|---|
| E2E 全量 | npm run test |
✅ 631 passed / 8 skipped / 0 failed |
8 个 skipped 为 cms-workflow.spec.ts 在 Firefox / WebKit 项目中被显式跳过(test.skip(browserName !== 'chromium')),属于预期行为,避免跨浏览器共享数据库导致数据竞争。
E2E 覆盖明细:
- 视觉回归:desktop / tablet / mobile / firefox / webkit 全通过
- CMS 工作流:chromium 下 3 个测试全部通过
- 跨浏览器兼容性:chromium / firefox / webkit 功能用例全部通过
5. 回归过程中发现与修复的问题
5.1 Playwright storageState 路径错误
- 现象:首次全量 E2E 运行时,Firefox / WebKit 下所有测试瞬间失败,报错
Error reading storage state from ./e2e/storageState.json: ENOENT。 - 根因:
e2e/playwright.config.ts中storageState: './e2e/storageState.json',但npm run test实际执行cd e2e && npx playwright test,导致 Playwright 查找e2e/e2e/storageState.json。 - 修复:改为
path.resolve(__dirname, 'storageState.json'),以配置文件所在目录为基准,兼容两种执行方式。 - 验证:重新执行全量 E2E,Firefox / WebKit 全部通过。
5.2 Firefox 中 Footer 链接测试 flaky
- 现象:
e2e/p2-functional-e2e.spec.ts中「Footer 导航链接可点击」在 Firefox 中反复超时,报错waiting for "http://localhost:3000/" navigation to finish。 - 根因:Playwright locator API 会在页面存在未完成导航时阻塞;Firefox 对
window.location.href全页导航处理较慢,单次测试内连续两次page.goto('/')+ 点击 StaticLink 触发全页导航,容易触发竞态。 - 修复:
- 将测试拆分为「Footer 导航链接可点击」(隐私政策)和「Footer 服务条款链接可点击」两个独立 test case。
- 改用
page.evaluate(() => element.click())直接触发点击,绕过 locator 的导航状态检查。 - 点击后通过
page.waitForURL()显式等待目标 URL。
- 验证:
--project=firefox --repeat-each=36 次运行全部通过;全量 E2E 中该用例通过。
6. 变更文件清单
本次回归修复涉及以下文件变更:
e2e/playwright.config.ts:修复storageState路径。e2e/p2-functional-e2e.spec.ts:拆分 Footer 链接测试并改用page.evaluate点击。README.md:更新项目进度。docs/lessons-learned.md:新增两条测试经验教训。
其余未提交修改(如视觉基线快照、dogfood 修复的源码文件)来自先前已完成的修复工作,本次回归验证确认其无新增回归。
7. 结论
全量回归测试通过,所有质量门禁达标,dogfood 修复未引入新回归。项目当前状态满足继续推进或封版条件。
报告生成时间:2026-07-27
执行者:AI Agent(基于 AGENTS.md 工作流)