验收要按唯一标识选中实例,不能按名字
一、现象与根因
- 构建产物在临时 DerivedData 里,安装目录里是旧版本,两者应用名相同、bundle id 不同。
- 按名字选进程(应用名、进程名、bundle 显示名)时,命中的是系统解析顺序里的第一个,不是你要验的那个。
- 更危险的是:它不报错。旧版只是"长得不一样",于是结论可能是"新 UI 没生效",也可能是"通过"(把旧版截图当验收证据)。
二、做法
- 启动:临时 DerivedData + 唯一
PRODUCT_BUNDLE_IDENTIFIER,直接启动绝对路径的 binary,不走open -a/应用名。 - 激活与截图:按该进程的精确 PID(窗口截图按精确 window id,如
screencapture -l <windowID>),不按应用名/pgrep 模糊匹配。 - 判断画面前:先核对 executable path / bundle id / PID 三者一致,再看画面。
- 多档位重复:深浅主题、compact/regular/wide 三档窗口,每一档都要重新走这套精确选择。
- 若确实拿不到可裁剪的本任务窗口,不拿旧版截图顶替,如实记为未验证。
三、可迁移
任何"选中一个实例"的动作——杀进程、截图、连服务、读日志——凡是用名字或模糊匹配(pgrep/pkill/tell application/默认端口)的,都可能命中另一个同名的旧实例。验收证据里必须带唯一标识(PID / bundle id / 绝对路径 / window id),否则证据无法证明它对应的是被验收的那一份。
相关
- 功能缺失先确认运行的是哪份产物 —— 同源:先确认打开的是哪一份产物
- 判断现状要看真正在跑的那一份 —— 本条是该 synthesis 在"进程/窗口选择"上的具体形态
- 以前能用最近坏了先查自己改了什么 —— 另一种默认假设导致的误判
- 对照两端要用同一条标识