移动模拟器验证是 cdp-verification 的移动端对应方案。由于手机上没有 CDP,输入通过 Maestro 驱动,证据来自 simctl 截图和录屏,状态来自真实的本地 API 和中继服务。该技能定义了“规则”(何为有效证据)和“机制”(如何实现)。
用途:在 iOS 模拟器上对 apps/mobile 的行为进行端到端验证,确保应用在真实服务环境下表现正确。
主要能力:
- 使用 Maestro 执行登录等用户输入流程。
- 通过 simctl 捕获截图和录屏,用于检查界面状态和闪烁问题。
- 提供 stand-in-host.ts 脚本,模拟宿主机在线状态,无需第二台机器即可测试。
- 支持本地 API、中继、实时服务和 Metro 的启动管理。
- 提供证据收集命令,如设置状态栏、录制视频、转换帧、切换语言和文字大小。
使用方式:
- 启动所需服务:在 Superset 终端中创建本地工作区命令,分别启动 API、中继(循环运行以应对崩溃)、实时服务和 Metro。
- 准备应用:确保模拟器上安装了 dev-client 构建,必要时重新构建原生依赖。
- 登录:运行 maestro test apps/mobile/.maestro/flows/sign-in.yml。
- 处理付费墙:为开发账户的组织临时添加订阅记录。
- 测试宿主机场景:运行 stand-in-host.ts 注册宿主机并保持在线。
- 收集证据:使用 simctl 截图、录屏,并用 ffmpeg 提取帧。
- 执行边界测试:包括冷启动、依赖停止、恢复、后台切换、快速状态变化、长名称、德语和CJK语言环境、最大文字大小。
- 清理:重置语言、文字大小、状态栏,停止服务,删除测试宿主机和临时订阅。
适用场景:移动端开发过程中的功能验证、缺陷排查、多设备状态模拟。
限制:
- 仅适用于 iOS 模拟器,依赖本地 API 和中继服务。
- 需要安装 dev-client 构建,原生依赖变化时需要重新构建。
- 部分操作(如添加订阅)会修改数据库,需谨慎并事后清理。
- 无 Mac 环境时需使用 EAS 云模拟器,步骤有所不同。
- 文档未提供所有可能场景的详细步骤,部分事实暂未提供。