--- id: T-104 title: 完成 Chrome/Edge 双实例与异常退出 smoke phase: 1 deps: [T-103] status: DONE created: 2026-07-22 owner: codex --- ## 需求与背景 核心进程能力必须在真实 Windows Chrome/Edge 上验证,fake runner 不能证明 Chromium 多进程、profile lock 和 Job Object 行为。 ## 方案与边界 - 使用 `go test -tags smoke` 运行真实临时 profile smoke。 - 每个浏览器使用独立临时 user data dir 和 headless 模式,避免污染用户 profile。 - 验证启动、PID、registry 占用、重复启动、Chrome/Edge PID 隔离和 force stop 后退出。 - 优雅关闭由单元 fake 覆盖;真实 headless smoke 重点验证实例级强制回收。 ## 验收要点 - `go test ./...`、`go vet ./...` 通过。 - `scripts/smoke-browser.ps1` 在 Chrome 和 Edge 均已安装时通过。 - 未安装的浏览器必须明确记录 skip,不能伪报成功。 - smoke 失败时不标记 DONE。 ## 执行记录 - 状态:DONE - 变更:新增 `smoke_windows_test.go` 和 `scripts/smoke-browser.ps1`,覆盖 Chrome/Edge 双实例、PID 隔离、registry 重复占用和 Job Object force stop。 - 验证:`go test ./...`、`go vet ./...`、`.\scripts\smoke-browser.ps1` 均通过;本机 Chrome 和 Edge 均安装并完成真实 headless smoke。 - 阻塞: - 残余风险:headless 模式不创建可见 message window,外部 profile inspector 在本次 smoke 中未取得 lock/window 证据;需要后续可控 headful/offscreen smoke 单独验证。force stop 返回 `exit status 1`,已按被终止进程的预期语义记录。