Skip to content

加快 App 端到端测试反馈 #197

Description

@vilicvane

重构 App 端到端测试运行方式,缩短本地与 CI 反馈时间,同时避免反复启动、关闭宿主浏览器。工作区为 code3d-issue-197-e2e-speed-codex-0919,关联观察结果修复 #206

当前方案与实现:

  • 普通、独占、独立浏览器和示例测试分层;普通组默认文件并发 2,焦点/时间/持久化敏感文件串行,OPFS 身份及 agent 目录工作流在同一个独立 headless 浏览器中串行。完整入口按组顺序执行,普通组不重复示例。分类以 packages/app/scripts/browser-test-plan.mjs 为唯一入口。
  • 默认失败即停止启动新文件;CODE3D_BROWSER_TEST_FAIL_FAST=0 可在诊断时继续跑完。记录逐文件和分组实际耗时。CI 示例分片按实测耗时均衡。
  • 本地普通、独占和示例组连接现有 host Chrome CDP,只关闭测试自建的上下文及连接,不启动或关闭宿主浏览器;隔离组只管理自己的独立进程。CI 无宿主实例时在一次命令内复用一个自管 headless 浏览器。
  • 基线回归中按行为修正 Agent 前景/背景摘要顺序(修正 Agent 观察中前景与背景模型的摘要顺序 #206)、草图切换、构建缓存 Map 序列化与缓存恢复消息顺序;更新已过时断言,并为已证实的异步状态增加条件等待,不提高产品格式版本。

当前验证:普通组 71/71 文件通过,默认并发 2 耗时 26.03 分钟,同批文件耗时总和 52.01 分钟,约节省 49.9%;受限进程峰值约 820 MiB。示例 43/43、隔离组 3/3、构建缓存 E2E 6/6 及单元 6/6、App/网站构建、全仓测试类型检查与格式检查均曾通过。8 GiB、无 swap 的受限进程覆盖 WSL 测试进程,不覆盖 Windows host Chrome;宿主 Chrome 的 browser ID 在测试前后保持不变。

独占组最近一次诊断运行 16/17 文件通过,唯一失败文件为 coordinate-semantics(93/96 用例):两项是新增网格断言误用于旋转,已修正并针对性复跑通过;另一项是页面初始模型偶发进入 Model error,在测试设置源码之前发生,独立复跑通过,根因尚未确认。启动失败时现会输出模型诊断和失败请求。修正后相关三条用例 3/3 通过;独占组尚未重新整跑,因此不能标为全绿。此前坐标语义文件在相关断言修复前曾单独 96/96 通过。

四路并发实验(2026-09-19,未修改默认配置):使用 CODE3D_BROWSER_TEST_CONCURRENCY=4 与诊断模式跑完相同普通组,70/71 文件通过(346/347 用例),耗时 21 分 51 秒,比此前两路的 26 分 02 秒缩短约 16.1%。WSL 测试 cgroup 采样峰值约 1.79 GiB,8 GiB 上限、swap 为 0;不包含宿主 Chrome。文件耗时总和由约 52.01 分钟增至 82.96 分钟,说明四路的收益不是线性翻倍。唯一失败为 sketch-relations 首条用例在准备阶段等待草图编辑器显示超过 15 秒,尚未进入拖拽断言;原代码单文件复测 3/3 通过,但尚不足以确认超时根因。默认仍保留两路;未把失败用例直接移入独占组或放宽超时。结果保存为 packages/app/.cache/browser-test-timings-concurrency-4.json。Chrome browser ID 未改变,测试后没有遗留测试页面。

本批已获用户验收并于 2026-09-19 本地提交、合并至 main,已推送至远端 main,网站已随 #210 的 alpha.12 发布上线。开发提交为 7005a8ca4bf29a41c265d4a37c839eb9e776eff9,追加分片测试修正为 32bcc0d3352da9f4c24748afece16de44e6861ba,最终合并提交为 a4bb47470f595e6afe1ec8cb89109e94c1ab69f8。默认并发仍为 2。

集成主线新增示例后,原“相比 modulo 至少改善 20%”测试因目录顺序改变而失败:新目录的加权负载为 [1055, 1057, 1057, 1080] 秒,modulo 为 [865, 1200, 1033, 1151] 秒,算法仍有效但该比例不是稳定性质。已回开发区将算法效果改为固定成本 fixture 的精确分配/负载验证,并独立验证当前示例目录的完整覆盖;未改变产品算法、并发或超时。

最终合并树验证:定向单元 12/12;agent-render-mode 与 parameter-tab 浏览器回归 7/7(包含文本冲突涉及的行为);全仓类型、Prettier、diff check、App/Web 构建通过,网站 123 个 HTML/Markdown 页面链接、锚点及资源通过。浏览器回归使用同一宿主 Chrome,临时 Vite 测试服务已关闭,没有遗留测试页面。本轮没有重跑完整端到端套件,不能将此前独占组或四路实验标记为全绿。

本 issue 是部分交付,保留打开且不写关闭关键词。剩余范围:定位初始 Model error 及四路草图编辑器超时的原因,并再次验证完整独占组。开发 worktree、分支及 5180 开发服务器保留用于该未完成范围。关联 #206 已单独完成验收,在最终合并提交包含关闭关键词,已随 a4bb474 推送至远端 main 自动关闭,状态标签已清理。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requeststatus:reviewAwaiting acceptance, integration, or authorized push

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions