Files
novalon-website/REGRESSION_REPORT_2026-07-27.md
zhangxiang 2653a3730c fix(regression): resolve dogfood findings across marketing, auth, e2e and docs
- 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
2026-07-27 07:39:11 +08:00

4.5 KiB
Raw Permalink Blame History

全量回归测试报告 — 2026-07-27

1. 回归目标

在完成 dogfood 系统性深度测试及问题修复后,执行全量回归验证,确认:

  1. 所有 dogfood 修复未引入新回归。
  2. 质量门禁(类型检查、Lint、单元测试、E2E、视觉回归)全部通过。
  3. 配置与测试代码中的隐式缺陷被识别并修复。

2. 测试范围

类别 覆盖内容
静态门禁 TypeScript 类型检查、ESLint
单元测试 Jest,覆盖 src/**/*.test.{ts,tsx}
E2E 功能测试 Playwright:首页、产品、方案、服务、案例、新闻、团队、关于、联系、法律页、导航、表单、404、SEO、A11y、性能、兼容性、边界场景
CMS 工作流测试 Playwright:管理员发布、非法状态拦截、多角色权限分离
视觉回归测试 Playwrightdesktop / tablet / mobile / firefox / webkit 全页面与组件截图对比

3. 执行环境

  • 日期2026-07-27
  • 分支:当前工作区(基于 10404db 之后的 dogfood 修复集合)
  • Node.jsv22.23.1
  • Next.js16.2.11
  • Playwright1.58.2
  • 浏览器Chromium / Firefox / WebKit

4. 执行结果

4.1 静态门禁

检查项 命令 结果
类型检查 npm run type-check 通过(无错误)
代码风格 npm run lint 通过(0 errors172 既有 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.tsstorageState: './e2e/storageState.json',但 npm run test 实际执行 cd e2e && npx playwright test,导致 Playwright 查找 e2e/e2e/storageState.json
  • 修复:改为 path.resolve(__dirname, 'storageState.json'),以配置文件所在目录为基准,兼容两种执行方式。
  • 验证:重新执行全量 E2EFirefox / WebKit 全部通过。
  • 现象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 触发全页导航,容易触发竞态。
  • 修复
    1. 将测试拆分为「Footer 导航链接可点击」(隐私政策)和「Footer 服务条款链接可点击」两个独立 test case。
    2. 改用 page.evaluate(() => element.click()) 直接触发点击,绕过 locator 的导航状态检查。
    3. 点击后通过 page.waitForURL() 显式等待目标 URL。
  • 验证--project=firefox --repeat-each=3 6 次运行全部通过;全量 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 工作流)