cents/skills/cents-playwright-regression/SKILL.md

67 lines
3.1 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.

---
name: cents-playwright-regression
description: 运行和维护 Cents 的中文 Playwright 回归测试,按功能分类执行测试,并将每轮失败案例、截图和 trace 归档到被 gitignore 的测试报告目录。
---
# Cents Playwright 回归测试
## 适用场景
用户要求执行 Cents 的端到端回归测试、增加第一批功能案例、检查离线/同步/多币种/报销流程,或分析上一轮测试失败时使用本 skill。
## 目录约定
- 测试目录:`tests/e2e/`
- 功能目录和测试文件使用中文,并以 `01-`、`02-` 编号。
- 每轮报告目录:`test-reports/YYYYMMDD-HHmmss/`
- 总结:`SUMMARY.md`
- 失败归档:`failures/`,保持测试案例原本目录结构。
- 失败目录中保存 `失败说明.md`、截图和 Playwright trace。
- 测试报告、trace、截图不得提交 Git。
## 执行流程
1. 阅读 `docs/测试策略.md` 以及涉及功能的设计文档。
2. 检查工作区状态,不覆盖用户已有改动。
3. 默认执行手机端和桌面端两个项目:
```bash
TEST_RUN_ID="$(date +%Y%m%d-%H%M%S)" npm run test:e2e
```
4. 失败时不要修改业务实现代码。先阅读测试输出、`失败说明.md`、截图和 trace。
5. 如需交互检查,使用:
```bash
npx playwright show-trace test-reports/<轮次>/failures/<案例>/trace.zip
```
6.`SUMMARY.md` 中记录通过数、失败数、环境、失败案例和判断;失败原因只描述证据,不擅自推断为业务 bug。
## 测试原则
- 测试真实用户路径和可观察行为,不测试 Vue 内部状态或实现函数。
- 主要使用角色、可访问名称、表单标签和 URL 定位;只有轮盘、同步图标、图表等难以稳定定位的元素才使用 `data-testid`
- 不使用固定长等待。使用 `expect`、网络响应、可见状态或 URL 变化等待。
- 每个测试使用独立 BrowserContext 和独立测试数据。
- API 和汇率服务可以使用 Playwright route mock不得连接生产数据库或修改生产数据。
- 离线案例必须分别覆盖真正断网、API 502/失败和请求超时。
- 业务代码失败时只记录失败,不为了让测试通过而放宽断言或修改实现。
## 第一批功能范围
- `01-账号`:登录、错误密码、刷新保会话、退出。
- `02-账本`:个人/共享账本显示、新增账本、默认币种。
- `03-快速记账`:金额、备注、个人账本自动关联、多账本、外币。
- `04-流水`:列表、详情、编辑、删除确认。
- `05-离线`:离线打开、离线记账、待同步标记、恢复同步。
- `06-多币种`:异步换算、失败降级、显示模式切换。
- `07-报销`:部分报销、超额拒绝、统计排除报销到账。
## 失败判断
- 断言失败:记录为产品行为失败。
- 启动失败、浏览器缺失、端口占用:记录为测试环境失败。
- API mock 未覆盖:记录为测试夹具缺口,不修改业务代码。
- 只有在测试断言与设计文档不一致时,才记录为测试设计问题,待确认后修改测试。