Files
novalon-website/REGRESSION_REPORT_2026-07-27.md
T
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

97 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 全量回归测试报告 — 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.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 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.ts``storageState: './e2e/storageState.json'`,但 `npm run test` 实际执行 `cd e2e && npx playwright test`,导致 Playwright 查找 `e2e/e2e/storageState.json`
- **修复**:改为 `path.resolve(__dirname, 'storageState.json')`,以配置文件所在目录为基准,兼容两种执行方式。
- **验证**:重新执行全量 E2EFirefox / 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 触发全页导航,容易触发竞态。
- **修复**
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` 工作流)