文件
hyb-oa/docs/mobile/pwa-regression-checklist.md
T

103 行
5.5 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# PWA 回归清单(P12 + P21PWA1 + P21PWA2)
## 前置条件
- `client` 已完成构建:`cd client && npm run build`
- 浏览器支持 PWA(Chrome / Safari 最新版,含移动端)
- 服务端 API 可用
- 离线相关场景优先在真实设备、企微 / 钉钉容器或移动浏览器中手工验证
## 场景 A:安装与离线壳
1. 打开系统首页,确认可出现安装入口(浏览器原生 UI)。
2. 安装到桌面后重新打开,确认可进入系统壳页面。
3. 断网后刷新,确认仍可打开壳页面(离线壳生效)。
期望:离线壳可访问,不应白屏崩溃。
## 场景 B:移动 PDF 发票离线上传
1. 访问 `移动 PDF 发票上传` 页面。
2. 断网,选择 PDF 文件,点击“立即上传”。
3. 确认提示“已加入待上传队列”。
4. 恢复网络,点击“同步队列”或等待自动重放。
5. 进入票据中心确认文件已上传。
期望:离线缓存成功,联网可重放成功。
## 场景 C:移动资产扫码
1. 使用具备资产读取权限的账号访问 `资产扫码` 页面。
2. 在支持 `BarcodeDetector` 的浏览器中点击“开始扫码”,扫描资产条码或二维码。
3. 若浏览器不支持 `BarcodeDetector`,确认页面自动回退到 ZXing 并可继续扫码。
4. 若相机不可用,改为手工输入资产编号 / 序列号 / 名称。
5. 确认唯一命中时展示轻量资产详情卡;多命中时展示候选列表。
期望:扫码与手工输入都能完成资产查找,且不要求新增原生壳。
## 场景 D:移动盘点录入与离线重放
1. 使用具备 `asset.inventory` 权限的账号,从 `资产盘点` 页面进入 `移动扫码盘点`。
2. 选择或打开一个 `draft` 盘点任务,点击“开始并扫码”,确认任务进入 `counting`。
3. 扫码定位资产后提交盘点结果,确认桌面盘点页同步看到新增 item。
4. 在任务为 `counting` 且已解析资产的前提下断网,再次提交盘点结果,确认提示“已加入离线队列”。
5. 恢复网络后等待自动重放或手动点击“同步队列”,确认队列项被移除且盘点结果已写回服务端。
6. 用无 `asset.inventory` 权限账号访问同一路径,确认只能查看资产结果,不能录入盘点。
期望:离线只缓存已解析盘点结果,联网可重放成功,权限边界不回退。
## 场景 E:移动审批在线动作
1. 使用审批角色访问 `移动审批` 页面。
2. 选择待办任务,依次测试在线 `通过` / `驳回` / `退回` / `转审`。
3. 返回待办列表与详情页确认状态同步刷新。
期望:在线动作闭环不回归,错误提示可读。
## 场景 F:workflow canonical deep link 落点
1. 生成待办通知,其 canonical URL 为 `/workflow/tasks/<taskId>`。
2. 在企微 / 钉钉容器或移动浏览器打开链接。
3. 确认 PWA 壳成功打开并自动跳转到 `/mobile/approvals?taskId=<taskId>`。
4. 确认待办详情正确展开;若该任务不在第一页列表中,也能单独查看详情。
期望:服务端 canonical deep link 不变,移动端自动落到移动审批页,桌面链接不回归。
## 场景 G:deep link 登录回跳
1. 未登录状态下直接打开 `/workflow/tasks/<taskId>`。
2. 守卫跳转到 `/login?redirect=...`。
3. 登录成功后返回原始 deep link。
4. 再次命中移动兜底跳转并进入 `/mobile/approvals?taskId=<taskId>`。
期望:登录回跳完整保留 deep link,上线后仍进入移动审批详情。
## 场景 H:离线审批草稿与联网重放
1. 在线进入移动审批页并成功加载某个待办详情。
2. 断网后选择 `通过` 或填写 comment 后 `驳回`。
3. 页面提示“已加入待同步审批草稿”。
4. 恢复联网后等待自动重放或手动点击“同步草稿队列”。
5. 确认成功项从队列移除,列表 / 详情刷新到最新状态。
期望:离线仅排队 `approve / reject`,联网可自动或手动重放成功。
## 场景 I:离线冷启动与未缓存待办
1. 设备先在线登录成功并写入本地会话快照。
2. 完全关闭页面后断网,直接打开 `/workflow/tasks/<taskId>` 或 `/mobile/approvals?taskId=<taskId>`。
3. 若该待办曾在线加载过,确认可进入移动审批壳并看到缓存详情。
4. 若该待办从未缓存过,确认页面只显示 taskId 与“离线未缓存该待办,请联网后重试”提示。
期望:离线冷启动仅依赖本地会话快照进入壳页面,不伪造未缓存详情。
## 场景 J:草稿冲突与失败重试
1. 离线起草一条 `驳回` 草稿。
2. 在恢复联网前,由其他审批人在线处理同一待办。
3. 自动重放返回 `409 already_processed`、`403` 或 `404`。
4. 确认草稿进入“存在冲突”状态,而不是静默视为成功。
5. 对 `5xx` 或临时网络异常场景,确认草稿进入“同步失败”状态并可手动重试。
期望:冲突与失败语义区分明确,用户可查看任务、重试失败项或丢弃草稿。
## 场景 K:权限与边界
1. 非审批角色访问 `移动审批` 或 deep link,确认被拒绝到 `403`。
2. 无在线会话且无本地快照时,离线冷启动不得绕过守卫。
3. 离线状态下确认 `退回` / `转审` 按钮统一置灰,并提示“需联网执行”。
期望:PWA-2 只放开移动审批壳的离线守卫,不扩散到其他受保护页面。
## 备注
- iOS 场景仅保证前台恢复后的重放,不承诺后台持续同步。
- `PWA-2` 不校验真实钉钉 / 企微 JS-SDK,只校验同源 H5 deep link 打开体验。