Commit f2c4f8db by DaiJiezhang

docs: 补充迁移验收的测试用例清单

为交给 AI 助手执行的验收测试整理任务说明与用例表。

背景:前端已有 57 个 Playwright 用例。对两个后端各跑一遍全量,
结果完全一致(56 通过、1 失败,且失败的是同一条),说明界面层行为已经对齐;
那条失败单独跑必过、并发跑必挂,属用例自身问题,与迁移无关。

据此核对覆盖面,发现现有自动化很不均匀:
- 账号与权限页 0 条,公司档案与公司人员各仅 1 条,总览页 0 条
- 现有用例全部以超级管理员身份运行,普通角色的界面差异从未验证
- 企微用例用 page.route 拦截了接口返回,验证的是界面渲染而非台账的真实变化
- 按输入位数变化的号码搜索规则(3/4/7/11 位四种行为)完全未覆盖

新增文档:
- docs/qa-tasks.md:执行说明,含不稳定用例的排查方向与三条红线
- 测试用例 xlsx:74 条用例分 12 组,结果列带下拉选项,
  另附执行说明与覆盖缺口分析两张表

对两处已知缺陷的写法是「记录实际现象、两边表现应一致」而非「应该成功」,
避免执行者误判为缺陷去改后端——它们已记录在 docs/migration-backlog.md,计划迁移后处理。

顺带把 Office 的 ~$ 锁文件加入忽略清单。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
parent a72946fd
......@@ -47,3 +47,6 @@ db-seed/
# 契约快照含测试库真实业务数据(姓名、手机号),默认不进仓库。
# 需要团队共享基准时,改为只提交 error.* 这类不含个人信息的快照。
scripts/contract/snapshots/
# Office 打开文档时生成的锁文件,不进仓库。
~$*
# 自动化测试待办
给 AI 助手执行的测试任务。分两部分:先修一个既有的不稳定用例,再补齐当前没有覆盖的场景。
## 现状
前端已有 57 个 Playwright 用例,位于 `frontend/tests/`
分别对两个后端跑过全量,结果完全一致:
```
NestJS (7691) 56 passed, 1 failed
Java (7690) 56 passed, 1 failed ← 同一个用例
```
失败的是同一条,因此与后端迁移无关,属于用例本身的问题。
运行方式(前端 dev server 会被自动复用):
```bash
cd frontend
npx playwright test # 默认连 Java 7690
VITE_API_TARGET=http://127.0.0.1:7691 npx playwright test # 连 NestJS 7691
```
---
## 任务一:修复不稳定用例
**用例**`frontend/tests/wecom-account.spec.js:4``creates an enterprise WeChat asset and exposes the required form`
**现象**:单独运行必定通过,全量并发运行必定失败。两个后端表现一致。
**排查方向**(按可能性排序):
1. 该用例用 `page.route` 拦截了 `**/api/wecom-accounts**`,通配符范围很宽,
可能与同文件其他用例的路由拦截相互覆盖
2. 用例里有 `expect.poll` 检查页面无横向滚动条,
并发时窗口尺寸或渲染时机可能不同
3. 弹窗动画未结束就断言,缺少等待
**要求**:找出真实原因再修,不要用加大超时或 `test.slow()` 掩盖。
修完连续跑 3 次全量,3 次都要 57/57。
---
## 任务二:补充缺失的测试场景
以下场景现有用例没有覆盖,按优先级排列。**每条都需要同时对 7690 与 7691 运行并给出结果**
两边行为不一致时先报告,不要自行修改后端代码。
### A. 权限与角色(优先级最高,完全没有覆盖)
现有用例全部以超级管理员身份运行,普通角色的界面差异毫无覆盖。
准备:用开发者账号 `Jeddy` 创建一个 `OPERATIONS` 角色账号,
逐页权限设为「总览 READ、其余 NONE」,密码 12 位以上。
| 编号 | 场景 | 预期 |
|---|---|---|
| A1 | 该账号登录后查看侧边菜单 | 只显示有权限的页面,无权限页面不出现在菜单里 |
| A2 | 直接在地址栏输入无权限页面的路由 | 被重定向回总览,不是显示空白页或报错页 |
| A3 | 把某页权限改为 READ 后访问该页 | 列表可见,新增/编辑/删除按钮全部不显示 |
| A4 | 该账号访问账号管理页 | 无法进入 |
| A5 | 管理员修改该账号的权限后,该账号原有页面刷新 | 被登出并要求重新登录(凭证版本已失效) |
### B. 登录与安全
| 编号 | 场景 | 预期 |
|---|---|---|
| B1 | 密码连错 20 次后再次登录 | 返回 429,提示「登录失败次数过多,账号已被临时锁定,请约 X 小时后重试或联系管理员解锁」 |
| B2 | 锁定期间用正确密码登录 | 仍被拒绝,提示同上 |
| B3 | 管理员在账号管理页解除锁定后再登录 | 立即可以登录 |
| B4 | 已登录状态下手动删除会话 Cookie 再操作 | 跳转登录页,提示「请先登录」 |
| B5 | 登录后连续操作,会话保持 8 小时不掉线 | 不被中途登出(可用改系统时间或缩短配置验证) |
用例请使用专用的测试账号名,不要锁定真实账号。
### C. 企微与手机号联动(后端逻辑最复杂,界面上完全看不出来)
每条都要在操作后**回到手机号页面确认台账的实际变化**,只看提示语不算通过。
| 编号 | 场景 | 预期 |
|---|---|---|
| C1 | 新建企微账号,填一个台账已存在的号码 | 台账不新增记录,号码类型仍是「自有号码」 |
| C2 | 新建企微账号,填一个台账没有的号码 | 台账新增一条,类型显示「外部号码」且可点击跳回该企微账号 |
| C3 | 把 C2 的企微账号改绑到另一个新号码 | 原自动创建的号码从台账消失,新号码出现 |
| C4 | 把 C1 的企微账号改绑到别的号码 | 原先那个已存在的号码**仍在台账中**,一个字段都没变 |
| C5 | 删除 C2 那类企微账号 | 它自动创建的号码一并消失 |
| C6 | 删除 C1 那类企微账号 | 被复用的号码保留 |
| C7 | 编辑企微账号但不改号码,只改备注 | 台账无任何变化,号码类型不变 |
### D. 表单校验与错误提示
| 编号 | 场景 | 预期 |
|---|---|---|
| D1 | 手机号填 10 位或含字母 | 提示「手机号必须是 11 位数字」 |
| D2 | 手机号填 `+86` 开头的 14 位 | 保存成功,列表显示去掉前缀的 11 位 |
| D3 | 卡类型选「虚拟号码」,不填 ICCID 与实名人 | 保存成功 |
| D4 | 卡类型选其他,不填 ICCID | 提示「ICCID 不能为空」 |
| D5 | 新建设备时用已存在的设备名 | 提示「设备名称已存在」 |
| D6 | 删除一个仍被人员挂靠的公司 | 提示「公司档案仍被公司人员引用,不能删除」,且记录未被删除 |
| D7 | 人员状态选「离职」但不填离职时间 | 提示「离职人员必须填写离职时间」 |
| D8 | 人员从「离职」改回「在职」 | 保存后离职时间被清空 |
### E. 列表与搜索
| 编号 | 场景 | 预期 |
|---|---|---|
| E1 | 手机号搜索框输入 3 位(如 `138`) | 结果全部以该号段开头 |
| E2 | 输入 4 位(如 `8000`) | 结果全部以该尾号结尾 |
| E3 | 输入 7 位(如 `1388000`) | 结果同时满足前 3 位与后 4 位 |
| E4 | 输入完整 11 位 | 精确匹配,最多一条 |
| E5 | 翻到最后一页再新增一条记录 | 列表回到第一页并显示新记录 |
| E6 | 筛选条件选中后查看筛选框 | 左侧仍显示筛选项名称(如「使用状态:」),不只显示选中值 |
| E7 | 五个列表页对比首列文字的左边距 | 完全一致(当前为距卡片左边 33px) |
### F. 图片上传(仅设备资产)
| 编号 | 场景 | 预期 |
|---|---|---|
| F1 | 上传一张正常 JPG | 列表出现缩略图,点击可看大图 |
| F2 | 上传超过 20MB 的文件 | 提示「每张图片不能超过 20MB」 |
| F3 | 把 txt 改名成 .png 后上传 | 提示「图片内容无效」 |
| F4 | 上传后编辑该设备,勾选删除图片 | 图片被移除,列表回落到占位图 |
| F5 | 上传一张带透明背景的 PNG | 缩略图背景为白色,不是黑色 |
| F6 | 上传 6000×6000 的大图 | 正常保存,缩略图长边为 240 像素 |
---
## 输出要求
1. 每条用例给出:编号、是否通过、7690 与 7691 的实际结果
2. 两个后端表现不一致的,**单独列出并附截图**,不要自行修改后端代码
3. 新增的用例放进 `frontend/tests/`,沿用现有文件的命名与写法
4. 不要修改 `backend/``backend-nest/` 下的任何代码
5. 测试数据统一使用 `__qa__` 前缀,手机号使用 `199` 号段,便于事后清理
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment