如何在e2e测试中混合AI智能体与确定性断言?3步搞定完整指南
如何在e2e测试中混合AI智能体与确定性断言3步搞定完整指南【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2ee2e是一个面向 Web 与移动端的下一代端到端测试框架用自然语言描述测试目标AI 智能体自动驱动应用完成操作再在同一测试里用传统定位器断言验证结果。本文将带你掌握混合 e2e 测试的最佳实践——既享受 AI 智能体的灵活性又保留确定性断言的稳定性与零成本。为什么要把两者混在一个测试里纯 AI 测试和纯脚本测试各有一半短板方案优点短板只用 AI 智能体界面改版后仍能用每次运行都要调模型贵且偶发抖动只用定位器断言快、稳、零成本UI 一改动脚本就大面积失败e2e 的设计思路是分工协作agent.act(目标)—— 把怎么做交给模型适合复杂、易变的多步操作登录、结账、填表expect(screen.getByRole(...))—— 把结果对不对交给定位器完全不经过模型毫秒级且结果确定agent.assert(描述)—— 只读判断型断言适合布局正常没有遮挡这类无法用精确文本表达的检查。官方文档一句话概括了这个原则docs/goals.mdx —— A test can freely mix both一个测试可以自由混用两者。核心玩法agent 负责做断言负责验以仓库自带的 Vite 示例项目为例整个流程只有 3 步。下面是官方示例 examples/with-vite/tests/agent.e2e.ts 的核心片段test(the agent gets a greeting, { skip }, async ({ app, agent, screen }) { await app.open(/); // ① AI 智能体自己判断该填哪个输入框、点哪个按钮 await agent.act(get the app to greet {name}, { params: { name: Grace } }); // ② 确定性断言精确文本检查不调用任何模型 await expect(screen.getByRole(status)).toHaveText(Hello, Grace!); // ③ AI 断言可选用人的眼光再确认一次 await agent.assert(the app greets Grace by name); });对应的演示应用页面长这样三个角色各司其职agent.act只描述目标让应用问候 Grace具体操作顺序由模型决定。输入值通过params传入避免把测试数据拼进指令文本expect定位器断言检查精确值如Hello, Grace!它自动重试直到通过或超时且不产生任何模型调用agent.assert作为兜底语义层验证那些难以写成精确匹配的结果比如整体观感、错误提示是否友好。 小贴士官方建议在每个agent.act后面紧跟一次验证见 docs/cache.mdxFollow each act with a check of its outcome这不仅是好习惯还直接决定缓存是否生效下一节。稳定性与成本回放缓存是关键加分项混合写法的隐藏福利是replay cache回放缓存某个agent.act步骤执行成功后若其后紧跟的断言通过了验证运行器会把这步的完整操作序列记录下来下次运行时直接回放这些操作零模型调用成本和速度等同于纯脚本测试一旦 UI 变了控件找不到或终态不匹配智能体会从当前屏幕自动接管跑完后再重新录制。运行报告里会给出直观统计AI 4.1k tokens · 2 model calls · anthropic/claude-sonnet-4.5 Cache 4 replayed · 1 handed off · 1 missed也就是说首跑用 AI之后绝大多数运行像确定性测试一样跑而 UI 漂移时 AI 又随时补位。断言类调用assert/waitFor/extract则始终实时运行保证验证永不走缓存。如果想在 CI 上更严格地防止陈旧录制被静默跳过可以加上--strict-cache参数录制失效的步骤会直接以REPLAY_STALE失败而不是悄悄付费重跑模型。实战建议清单✅每个act只给一个目标——界面内的操作顺序交给模型目标之间的顺序由你控制 ✅指令像说话一样写优先使用界面上的原始文案 ✅精确值检查一律用expect把模型调用留给真正模糊的判断 ✅密码等敏感值用Secret参数传入模型永远看不到明文安全模型见 docs/agent-steps.mdx ✅每步act后紧跟一次验证断言让回放缓存有验收依据 ✅ 快速上手用npx e2e init生成配置和示例测试完整教程见 docs/quickstart.mdx。延伸阅读混合策略入门docs/goals.mdxagent.act 与目标化写法断言全家桶docs/assertions.mdxassert/waitFor/extract与定位器断言智能体步骤原理docs/agent-steps.mdx模型看到什么、步骤如何结束、成本构成回放缓存详解docs/cache.mdx可运行示例Vite 版 examples/with-vite/tests/agent.e2e.ts、Next.js 版 examples/with-next/tests/greeting.e2e.ts一句话总结让 AI 智能体负责像人一样操作让确定性断言负责像测试一样验证再配合回放缓存把成本压到最低——这就是 e2e 混合测试的核心配方。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Pendulum 时区完全指南:DST 过渡、归一化与 fold 语义详解

Pendulum 时区完全指南:DST 过渡、归一化与 fold 语义详解

后端 【免费下载链接】pendulum Python datetimes made easy 项目地址: https://gitcode.com/gh_mirrors/pe/pendulum 点击查看 免费下载 导读 时区是任何 datetime 库都无法回避的复杂话题,尤其在夏令时(DST)切换的"弹簧前…

2026/10/7 9:56:39 阅读更多 →
Hyperf 异步队列(async-queue)实战指南:从配置、投递到任务流转与源码原理

Hyperf 异步队列(async-queue)实战指南:从配置、投递到任务流转与源码原理

后端微服务 【免费下载链接】hyperf 🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease. 项目地址: https://gitcode.com/gh_mirrors/hy/hyperf 点击查看 免费下载 本指南基于 Hyp…

2026/10/7 9:56:39 阅读更多 →
STC单片机C语言开发入门:从寄存器操作到串口通信实战

STC单片机C语言开发入门:从寄存器操作到串口通信实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:56:39 阅读更多 →

最新新闻

基于Spring Boot+Redis的操作系统日常促学系统设计与实现

基于Spring Boot+Redis的操作系统日常促学系统设计与实现

做了个“操作系统日常促学系统”,可能是最近被课程设计催出来的标准动作。操作系统这门课,知识点又散又抽象,进程管理、内存管理、文件系统、死锁这几块,上课听懂了,隔三天就还回去大半。期末全靠突击,突击…

2026/10/7 10:28:07 阅读更多 →
AI写作痕迹重?豆包降AIGC检测率实操指南:从查重原理到改写技巧

AI写作痕迹重?豆包降AIGC检测率实操指南:从查重原理到改写技巧

最近被问得最多的一个问题,不是怎么用豆包写出更好的文章,而是怎么让豆包写出来的东西“不像豆包写的”。尤其是文章要交去查重、过AIGC检测的时候,直接复制粘贴几乎必挂。我前阵子帮一个朋友处理结课报告,原文用AI写完就复制粘贴…

2026/10/7 10:28:07 阅读更多 →
Java Swing + MySQL 房屋租赁管理系统:源码详解与数据库避坑指南

Java Swing + MySQL 房屋租赁管理系统:源码详解与数据库避坑指南

简介:这份JavaSwingMySQL房屋租赁管理系统项目,完整包含前端界面、后端逻辑、数据库脚本和课程设计文档,主要面向Java初学者、数据库课程设计或毕业设计需要完整案例的读者。系统功能覆盖前台浏览与用户注册登录、后台管理员登录、房源信息录…

2026/10/7 10:28:07 阅读更多 →
GEO生成引擎优化:从AI引用到内容价值的完整实战指南

GEO生成引擎优化:从AI引用到内容价值的完整实战指南

过去两年,我做内容营销和 SEO 咨询时被问到最多的问题,已经从“怎样让关键词排进前三”变成了“为什么我的文章被 AI 引用之后,网站流量却没有变化”,以及一个更扎心的追问:“AI 生成的内容里引用了别人,我…

2026/10/7 10:28:07 阅读更多 →
用Git管理文档协作:版本控制、冲突解决与团队规范实战

用Git管理文档协作:版本控制、冲突解决与团队规范实战

如果你在一个五六个人的技术团队里待过,一定经历过这样的下午:产品手册的某个章节突然被改了,但没人知道是谁改的;你辛苦写好的接口说明,第二天被人整体替换成了旧版本;最刺激的是,五个人同时往…

2026/10/7 10:28:07 阅读更多 →
SQL注入原理与实战:从万能密码到防御加固

SQL注入原理与实战:从万能密码到防御加固

1. 先说清楚SQL注入为什么会存在 很多初学者第一次接触SQL注入,都是从一句莫名其妙的“万能密码”开始的:在用户名框里输入 or 11 -- ,密码随便填,结果居然登录成功了。我当时第一次看到这个操作,第一反应是“这也能…

2026/10/7 10:27:06 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →