Wink Pings

让 AI 点页面容易,难的是证明它点对了

e2e 团队布道师 Kacper Kapuściak 总结了 5 条给 AI Agent 写 E2E 测试的实践:测用户意图、等业务状态、用 API 当真值源、保持用例独立、把失败轨迹打包。Agent 会不会点已经不再是核心,验收标准能不能对账才是。

e2e 这个开源 AI 测试框架最近在 GitHub 上到了 13.8k Star,团队刚拿了 800 万美元融资。创始团队技术布道师 Kacper Kapuściak 写了一篇工程实践,主题是给 AI Agent 写 E2E 测试。文章不短,核心矛盾很清楚:Agent 能替你点页面之后,测试的可信度反而更依赖断言和真值源。

image

1. 测用户意图,不测前端实现

用户只想生成上个月的活动报告,不关心日期选择器用了哪个组件库,也不关心按钮里套了几层 DOM。Kacper 建议直接给 Agent 下业务目标,代码里就是一句 agent.act,目标是“生成上个月的活动报告”。Agent 自己判断该选月份、填日期还是点预设。前端换组件库、改按钮文案,用例不用跟着重写。绑 test-id 的测试一改版就红,维护成本最后可能比写测试还高。

2. 等业务状态,别用固定 sleep

固定 sleep 是 CI 里的慢性病。五秒等待能让本机通过,也让每次成功运行都多花五秒。报表生成时间随数据量和服务器负载变化,Kacper 的做法是用带超时上限的 agent.waitFor,等“上个月活动报表已经可以查看”这种强业务状态。Loading 消失是弱信号,只能说明某个 UI 元素没了。有网友补了一句:动态等待必须绑定业务状态的可观测来源,否则“等报表打开”和固定 sleep 只是换一种猜法。

3. 用后端 API 当真值源,再让独立 Judge 对账

执行 Agent 说“点击完成”不算验收。报表可能空数据,也可能串了别的 workspace 的数据。更不能让大模型盲猜什么才是正确画面。Kacper 的流程是先从后端 API 查出真实任务列表,把它作为唯一真值源,再调用独立的 AI Judge,把屏幕渲染明细和 API 底账逐条比对。有网友在回复里补了一个关键点:CSV 这类结果可以再加一道确定性检查,列名、行数、金额直接用代码对账,AI Judge 留给布局和交互语义。能少一层“模型判断模型”就少一层。

4. 测试之间别互相依赖

报表测试不该等“完成任务”测试先跑。单独跑、重试、并发跑,数据就可能消失。Kacper 建议开跑前通过可复用的 Fixture 调接口,独立构造专属工作区和测试数据,跑完在 afterEach 或 afterAll 里清理还原。每个测试自己安排状态,重试和并发才能幂等。共享代码可以留,但别把顺序依赖包装成复用。

5. 拆原子测试,把失败轨迹打包

“生成报表,下载 CSV,发邮件”是三个动作,拆成命名清晰的独立测试。失败时,e2e 会打包故障追踪轨迹,覆盖前置步骤、应用日志、Agent 推理上下文和屏幕快照。人类能快速定位,也能直接喂给 Coding Agent 修 Bug。它不保证完美复现,也不保证直接指出应用代码哪一行坏了,但比一句“something went wrong”强太多。

有网友在回复里泼了点冷水:软件最后还是给人用的,AI 全自动 E2E 顶多做一个大概的排雷,有些场景效果还是一般。这话不讨喜,但值得放进验收清单。Agent 能降低操作成本,不能替你定义正确。先挑一个团队反复重跑的用例,按这五条改。然后故意弄坏一个流程,看测试能不能抓住。

传送门:5 Tips for Writing Good Agentic Tests with e2e

发布时间: 2026-11-15 05:29