test: add complete iOS MVP business suite

This commit is contained in:
selfrelease
2026-07-18 20:54:23 +08:00
parent e19bdb8728
commit 24101398d8
11 changed files with 394 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
# iOS MVP 前端业务测试方案
## 测试目标
在真实 iOS Simulator、Keycloak、PostgreSQL、Flowable 和 Kotlin 后端上验证 Flutter MVP 业务闭环,而不是只验证孤立 Widget。
## 自动化场景
### 员工
- 使用临时测试 Token 进入工作台,生产 OIDC 流程不被替换。
- 打开 Schema 动态请假表单,检查类型、开始时间、结束时间、原因及千问表单助手。
- 通过真实 API 创建唯一草稿,在“我的申请”中找到并打开。
- 从申请详情确认提交,验证状态进入“审批中”。
- 查询 AI 流程进度;千问未配置时验证明确的失败降级。
- 检查待办/通知入口与个人中心设备列表。
附件选择器和系统相册属于 iOS 系统 UI,仓库中的附件 Repository、上传进度、类型和幂等测试负责自动化覆盖;真实文件选择纳入人工验收步骤。
### 部门主管
- 测试自动用员工身份创建并提交一条唯一申请。
- 主管进入待办,只定位该申请并批准。
- 验证批准成功提示,避免依赖历史测试数据。
### OA 管理员
- 验证权限驱动的“OA 管理中心”入口。
- 验证业务指标、组织用户与角色、流程定义/实例、脱敏审计四个页面。
## 执行前提
- PostgreSQL 与 Keycloak 容器健康。
- 后端运行在 `http://localhost:8080`
- 已启动一个 iOS Simulator。
- Realm 中仅限本地开发的 employee、manager、admin 用户可用。
## 执行命令
```bash
./scripts/test-ios-mvp.sh
```
脚本不会输出或持久化访问 Token。`AIOA_E2E_ACCESS_TOKEN` 只在显式测试构建中生效,普通 Debug、Release 和商店构建仍使用 OIDC Authorization Code + PKCE。
## 人工补充验收
1. 点击 Keycloak 登录并完成浏览器回调。
2. 从系统文件选择器选择 JPEG、PNG 和 PDF,确认上传进度和附件状态。
3. 在配置 Firebase 的真机上确认前台、后台和点击跳转通知。
4. 在配置千问密钥的环境确认 AI 草稿建议成功,并检查确认卡片不会自动提交。
+43
View File
@@ -0,0 +1,43 @@
# iOS MVP 前端业务测试报告
- 执行日期:2026-07-18
- 设备:iPhone 17 Pro Simulator
- 系统:iOS 26.5
- Flutter:本机 stable
- 后端:本地 Kotlin/Spring Boot
- 基础服务:PostgreSQL 17.5、Keycloak 26.2.5、Flowable 7.2
## 自动化结果
| 场景 | 结果 | 主要验证点 |
|---|---|---|
| 员工 | 通过 | 工作台、Schema 表单、千问入口、真实草稿、我的申请、提交审批、流程状态、AI 降级、通知、设备 |
| 部门主管 | 通过 | 自动构造唯一待办、列表定位、批准、成功反馈 |
| OA 管理员 | 通过 | 权限驱动入口、指标、组织角色、流程定义/实例、脱敏审计 |
最终脚本输出:`All iOS MVP frontend business scenarios passed.`
同时通过:
- Flutter Analyze
- 27 项 Flutter 单元与 Widget 测试
- iOS Simulator 编译、安装和进程启动
- 登录取消与安全存储异常恢复验收
## 测试期间发现并处理
1. Keycloak 登录取消曾直接显示底层 AppAuth 异常,已改为静默取消或简短中文错误。
2. 模拟器重装后安全存储异常曾阻塞登录页,已降级为无本地会话。
3. 通知标签包含动态未读数,集成测试改为语义匹配。
4. 管理员 Token 因整套测试耗时接近过期,脚本改为每个角色执行前即时获取 Token。
5. 主管场景原先可能命中历史待办,现改为自动创建并只处理唯一测试申请。
## 外部配置相关验证
以下能力的代码路径、失败降级和 Repository 已自动化覆盖,但成功投递依赖外部正式凭证或系统 UI:
- 千问真实回答:需要有效且已轮换的 `QWEN_API_KEY`
- APNs/FCM 真机通知:需要 Firebase 项目与 Apple 推送配置。
- 系统文件选择器:需人工选择 JPEG、PNG、PDF 完成真机上传验收。
这些外部条件不影响当前 MVP 前端业务闭环、权限边界和失败处理的自动化通过结果。