Skip to content

feat(ui-evidence): 真实浏览器运行时与可追溯 UI 验证 #102

Description

@Qiyuanqiii

Parent: #98

问题概述 / Summary

run-verify 已把 ui-evidence 作为首个扩展写入 Skill,但目前只是工作流指导。需要产品级真实浏览器运行时和证据合同,确保前端改动通过实际启动、固定页面状态、截图/GIF、控制台和请求结果验证,而不是只检查源码或沿用旧截图。

优先级 / Priority

P0。UI 项目交付必须能证明“改动后的真实页面”与固定源码状态一致。

当前基线 / Current baseline

  • Browser Runtime/Safe Web/Full CDP 的既定安全边界已由 [Epic] Browser Runtime 与 CDP / Browser runtime and CDP #33 完成,但没有面向 run-verify 的独立 UI 证据产品入口。
  • Desktop 与 Web 前端已有 Playwright 测试基础和发布矩阵;现有证据不统一绑定 commit、启动配方、视口与页面状态。
  • Skill 指南要求记录固定提交、启动命令、视口、页面状态和截图/GIF来源,但运行时不能自动采集并校验这些字段。
  • 普通浏览器 Profile、已登录会话和用户 Chrome/Edge 不得被复用。

范围 / Scope

  • 定义 ui-evidence.v1 manifest:repository/commit、dirty digest、build/start recipe、runtime/tool versions、URL/route、viewport/DPR、locale/theme、fixture/seed、页面状态与采集时间。
  • 提供 Run-owned 浏览器 driver,使用独立临时 Profile、固定 executable/version、可取消的进程树和明确的本地/网络 Scope。
  • 从受审阅启动配方真实启动应用,等待结构化 readiness,再执行导航、交互、断言和采集;不得使用预先存在的服务冒充当前提交。
  • 采集 screenshot、可选 GIF/video、DOM/accessibility snapshot、console error/warning、page error、failed request、HTTP status 和关键性能时间线。
  • 每个 Artifact 保存 hash、MIME、尺寸、视口、来源 step、commit、Run/attempt 和脱敏状态;UI 可回放步骤与查看证据。
  • 支持确定性 fixture、seeded state、身份/Secret 脱敏、动态区域 mask 与视觉基线更新审阅。
  • 失败必须区分 build、launch、readiness、navigation、selector、assertion、console、network、capture 和 cleanup。
  • 与 run-verify、focused-checks 和 PR 交付收据集成;未实际运行时状态必须为 not_run。

非目标 / Non-goals

  • 不接管用户日常浏览器、Profile、扩展、cookie 或已登录会话。
  • 不把 Full CDP 高风险调试权限作为普通本地 UI smoke 的默认要求。
  • 不自动访问公网;远程 URL/认证流程需要单独 Scope、credential 和审批。
  • 不以像素快照单独替代行为、可访问性、控制台和请求验证。
  • 不允许手工上传的图片在缺少来源 manifest 时伪装成自动证据。

涉及目录 / Affected directories

  • internal/browserruntime/
  • internal/application/
  • internal/runner/
  • internal/workspace/
  • internal/store/
  • internal/events/
  • internal/policy/
  • internal/approval/
  • internal/httpapi/
  • cmd/
  • web/src/
  • docs/
  • configs/skills/run-verify/

依赖 / Dependencies

  • 被“普通模式真实命令闭环”阻塞,因为应用启动、readiness、后台 Job 和清理必须由统一 Run-owned runtime 提供。
  • 可提前独立定义 manifest、Artifact schema 和前端证据查看器。

验收条件 / Acceptance criteria

  • 从 clean checkout/固定 commit 按记录配方真实启动示例 UI,并由独立浏览器完成导航、交互和截图。
  • 每份证据可追溯到 commit、dirty digest、启动命令、工具版本、视口/DPR、route、fixture/seed 和 step。
  • console/page error、failed request、非预期 HTTP status 会使验证失败,且保存有界脱敏证据。
  • 截图/GIF/video、DOM/a11y snapshot 和日志均有 hash、来源和 retention/size 限制。
  • 浏览器、应用进程、临时 Profile 和端口在 success/timeout/cancel/crash 后可验证清理。
  • 用户日常 Chrome/Edge Profile 与 cookie 不被读取、连接或污染。
  • CI headless、Windows Desktop 本地 smoke、不同 viewport/theme/locale 和 reduced-motion 有真实测试。
  • Skill、CLI/OpenAPI、Desktop UI 与 README 使用同一字段和状态语义;not_run 不显示为通过。
  • 至少一个前端回归能被真实页面证据捕获,而源码检查单独不能通过。

安全边界 / Security boundaries

浏览器证据属于不可信执行结果;它不能授权网络、泄露登录状态或证明源码外的不可见安全属性。

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedBlocked by external evidence or dependencybrowserBrowser runtime and CDP capabilitiesdesktopDesktop client and Windows distributionenhancementNew feature or requestgoPull requests that update go codehelp wantedExtra attention is neededjavascriptPull requests that update javascript codesecuritySecurity boundary or high-risk capability高难度

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions