
测试测试智能体人工智能浏览器控制CLI【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址https://gitcode.com/GitHub_Trending/e2e6/e2e点击查看免费下载本文基于 e2e 仓库的内部开发者技能文档 verify讲解在这个 agentic E2E 测试框架的 monorepo 中如何完成证据驱动的验证闭环改动后如何用真实的构建 CLI 在 testbed 与 benchmark 应用上运行、如何按改动面选择验证入口、如何用e2e mcp会话与录像/截图为 PR 产出可复现的证据。读完你能够掌握stale dist 陷阱的规避、各包改动对应的验证矩阵、replay 录制的 agent 套件验证流程、以及 main 与分支对比取证worktree 双跑的完整操作。核心主张单元测试通过不等于改动正确verify 技能开篇就定调Every change ships with evidence from the real thing每个改动都要附带来自真实产物的证据。对这个仓库而言单元测试通过不是证据——它不能证明 CLI 打印了正确的那行输出、定位器在真实页面上找到了节点、或某个 agent 步骤可以被回放。这里的真实应用就是仓库自带的 testbed 与 benchmarksapps/testbed是一个消费已构建包dist/的 dogfood 工程模拟真实用户的安装与使用方式apps/web-benchmark与apps/mobile-benchmark则提供高难度 UI 面shadow DOM、canvas、iframe、原生对话框、植入的 bug 等。因此验证要放进开发循环里而不只是收尾动作change, build, run, look, repeat —— 改、构建、运行、查看、重复。环境准备与 stale dist 陷阱验证前的固定准备序列来自技能文档 Setup 一节pnpm install --frozen-lockfile pnpm --filter e2e-dev/web exec playwright-core install chromium pnpm build # 下面所有消费者都跑 dist每次改动后重新构建根目录 package.json 中的build脚本按显式顺序构建七个包e2e、e2e-dev/web、e2e-dev/mobile、e2e-dev/github、e2e-dev/kernel、e2e-dev/eas、e2e-dev/decision而不是依赖拓扑排序——因为e2e以 devDependency 依赖 web 引擎跑浏览器集成的测试而引擎又以 peer 依赖回指e2e存在一个 pnpm 每次安装都会报告的循环。技能文档点名的最常见错误结果是stale distA staledistis the most common false result. Rebuild before trusting any run, and after switching branches.所有验证命令直接调用node node_modules/e2e/dist/cli/bin.js跑的是上次构建的产物。信任任何一次运行前包括切换分支之后都要先重建。AGENTS.md 的 Testing quirks 一节也呼应了这一点集成测试通过非字面量导入 specifier 从dist/加载 runnerStaledistmeans confusing failures — rebuild。按改动面选择验证入口技能文档的核心是一张改动 → 运行 → 证明了什么的映射表验证矩阵如下完整继承自原文档改动面运行什么证明了什么Runner、collect、locator、config、sessions、CLI flagstestbed 套件或覆盖它的单个文件构建后的 CLI 在确定性应用上端到端工作Reporterslist、json、markdown、junittestbed 文件 test:stress打印与写出的输出包括敌意标题e2e-dev/webtestbed 文件然后是 web benchmark 的tests/真实 Chromium 在普通与高难面上的表现Agentsrc/agent/、prompts、trace cacheweb benchmark 的tests-agent/回放然后--no-cache --ai-trace回放依然命中且 live agent 仍能达到目标e2e-dev/mobile模拟器或模拟器上的 mobile benchmark真实设备见 apps/mobile-benchmarke2e mcptestbed 上的e2eMCP 服务器工具在 coding agent 眼中的样子e2e init、打包、skill 本身/tmp下 scratch 项目里打包好的 tarball新用户从 npm 得到什么Docs 页面pnpm docs:dev渲染出来的页面e2e-dev/githubPR 自己的e2e-github评论用户 PR 收到的那条评论对应的命令都要在应用目录下执行。直接调用 CLI而不是pnpm runcd apps/testbed node node_modules/e2e/dist/cli/bin.js run tests/todos.e2e.ts cd apps/web-benchmark pnpm run build # Next.js 应用每个场景改动跑一次 cd apps/web-benchmark node node_modules/e2e/dist/cli/bin.js run tests/scenario.e2e.ts cd apps/web-benchmark node node_modules/e2e/dist/cli/bin.js run --config e2e.agent.config.ts pnpm test:testbed pnpm test:web-benchmark # CI 跑的整体门禁直接调 CLI 的原因值得单独说明pnpm run script -- --flag会把--一并转发导致 CLI 把这个 flag 误读成一个文件参数。apps/testbed/package.json 里的脚本本身就是这种直接调用风格例如test是tsc --noEmit node node_modules/e2e/dist/cli/bin.js runtest:stress是node node_modules/e2e/dist/cli/bin.js run --config e2e.stress.config.ts——其 e2e.stress.config.ts 指向tests-stress/**/*.e2e.ts即失败、超时、跳过、flaky 与敌意标题的压力场景这正是上表中 reporter 改动的验证面。为需要持续证明的行为补确定性测试技能文档要求在行为必须被持续证明时在旁边加一个确定性测试runner 功能 → testbed 页面 测试如tests/scroll.e2e.ts这类与页面一一对应的套件高难面 → web benchmark 的场景。两条纪律场景 diff 保持最小场景文件是从源基准复制来的要能双向移植以及绝不修复植入的 bug——planted bug 是场景的语义本身修了它等于删了测试。测试写法遵循消费者技能 skills/e2e这个 monorepo 是该技能的第一消费者testbed/benchmark 里每个测试都是用户视角的示范。Agent 改动的验证录制回放与 AI traceAgentic 运行需要AI_GATEWAY_API_KEY。关键机制是提交的回放录制benchmark 的 agent 套件如 apps/web-benchmark/tests-agent重放其提交的录制committed recordings只有遇到没有录制的步骤才真正调用模型与 CI 行为一致。由此得到一条实用的陈旧度信号某个步骤在回放中花费了模型调用说明它的录制已经过时recording went stale。只有当改动确实落在 agent 上时才用--no-cache --ai-trace走 live 路径并用 unbox-ai 工具读取 trace——比较 main 与分支compare绝不用打开原始文件的方式去看那是数 MB 的重复上下文见 unbox-ai 技能 与 AGENTS.md Inspecting agent runs with unbox-ai 一节--ai-trace把每次模型调用按 AI SDK devtools 数据库形状写入.e2e/ai-trace.json。重新录制产生的条目要在同一个 PR 里提交AGENTS.md Committed recordings 一节规定了这一约定web benchmark 的 agent job 还带--strict-cache坏掉的录制会以REPLAY_STALE失败而不是静默回退到模型调用。MCP 服务器像 coding agent 一样验证工具根目录 .mcp.json 把e2e mcp注册在 testbed 上{ mcpServers: { e2e: { command: pnpm, args: [-C, apps/testbed, exec, node, node_modules/e2e/dist/cli/bin.js, mcp] } } }会话工作流是open_session然后call {tool: observe}、locate、screenshot与各动作动词要对着 benchmark 验证时给open_session传config: ../web-benchmark/e2e.config.ts。几个实操要点重建后要重启服务器进程MCP 服务器跑的是它启动时加载的那份dist。改完 MCP 或引擎代码后在 Claude Code 里用/mcp重启它再验证。多会话有上限可同时开多个会话--max-sessions默认 4。源码里这个值定义在 packages/e2e/src/mcp/session.ts 的SESSION_BOUNDS { min: 1, max: 16, default: 4 }即参数范围是 116每次调用都要带 session id用完close_session。超限时的报错文案no session slot is free... close_session one first见 packages/e2e/src/mcp/sessions.ts。用途写定位器locate会打印对应的screen.*调用、测试前先看一眼表面、验证 MCP 工具本身的改动、以及在引擎支持录像时web 与 mobile 都支持录一段你操作过程的视频start_recording屏幕就绪后调一次、stop_recording返回文件路径。像用户一样驱动它技能文档 Drive it like a user 一节列出的五条准则跑构建后的 CLI不是单测 harness。读它打印的内容也读它写出的内容.e2e/report.json、每个测试的 trace 页.e2e/results/test/trace.md以及--reporter list,markdown产出的.e2e/summary.md。验证失败路径。错误码、超时、策略拒绝policy refusal类改动要主动触发它读用户实际看到的那条消息。检查副作用产物落在文档说的那个位置填过的 secret 绝不能出现在.e2e/下任何文件里grep -r那个值确认。这与 AGENTS.md 列出的安全不变量一致——secret 永不进入模型输入、digest、日志、报告或产物。APP_ALREADY_RUNNING的处理说明另一个 checkout 的运行占着应用端口。等它或去问永远不要停掉不是你启动的进程。移动端设备操作遵循 apps/mobile-benchmark/README.md同一时间每设备只跑一个运行。证据PR 必须展示它在工作技能文档要求 PR 展示验证结果与 writing-pr 技能 的## Verified章节配套报告用了什么表面、跑了什么命令、看到了什么并附媒体证据。终端输出是 runner、CLI、reporter 改动的第一证据把 CLI 输出的相关行放进text围栏代码块去掉 ANSI、裁剪路径。视频--video加--headed可观看在支持录像的引擎上录制每一次尝试写入.e2e/results/test/attempt-n/video/e2e-dev/web产出video.webme2e-dev/mobile产出video.mp4。引擎、定位器、agent 这类观看者能看到的改动应附上。web 引擎的录像分段逻辑首个文件为video/video.webm后续为video-partn.webm见 packages/web/src/video.ts。静态帧从视频里截一帧ffmpeg -ss seconds -i video -frames:v 1 after.png或截 docs 页面的屏。Bug 修复的 main 对比分支先写回归测试趁 checkout 还匹配 main 时跑它让失败被捕获下来。如果代码已经改了就把 main 并排构建出来git worktree add /tmp/e2e-main origin/main # 在 /tmp/e2e-main 中 pnpm install --frozen-lockfile pnpm build # 然后在两边跑同一条命令上传gh pr create|edit --body-file body.md --attach ./after.png --attach ./video.webmgh2.99会逐个上传文件、重写正文里的 markdown 图片路径并把视频以播放器形式追加到末尾。旧版gh就把文件拖进 PR 页面或在正文里说明媒体在本地以及原因。最后一条是全文的收束句如果有无法验证的东西就说出来并点名阻塞项。没有证据的自信断言比inconclusive无法定论更糟。清理与收尾e2e run会停掉它自己启动的应用MCP 侧用close_session停掉该会话的应用。用完/tmp/e2e-mainworktree 后执行git worktree remove移除。上游衔接AGENTS.md 的 Definition of done 明确把 verify 技能纳入完成定义——Prove behavior with theverifyskill ... while iterating and before the PR: the built CLI on the testbed or a benchmark, thee2eMCP server (.mcp.json), a scratch project forinit, the docs site. If you cannot verify something, say so; never imply you did.且 It compiles 与 tests pass 都不算完成。赞分享测试测试智能体人工智能浏览器控制CLI【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址https://gitcode.com/GitHub_Trending/e2e6/e2e点击查看免费下载相关推荐大麦网自动抢票脚本使用指南Python 从环境到下单的完整配置大麦网自动抢票脚本使用指南Python 从环境到下单的完整配置 开票倒计时归零后热门演唱会的库存往往几秒内见底按钮从「即将开抢」翻成「立即购买」只用了 0网页爬虫工作流自动化ScriptCat E2E 测试框架实战指南双轨验证、Fixture 体系与本地验证会话驱动ScriptCat E2E 测试框架实战指南双轨验证、Fixture 体系与本地验证会话驱动 ScriptCat脚本猫是一个可执行用户脚本的浏览器扩展其前端开发者工具插件系统microbundle构建产物验证自动化测试配置microbundle构建产物验证自动化测试配置 你是否还在手动检查microbundle打包后的文件是否符合预期是否担心某次构建变更导致产物异常却未被察觉开发工具构建工具上一篇AspectMock实战测试ActiveRecord模式代码的完整指南下一篇Evolver 对接 Codex 完整指南为什么 --review 读不到会话日志创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考