☰
从0到1认识e2e:开源AI测试框架的项目结构与代码导读
2026/10/7 20:15:49 网站建设 项目流程

从0到1认识e2e:开源AI测试框架的项目结构与代码导读

【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e

e2e 是一个面向 Web 和移动端的开源 AI 端到端测试框架:用一句自然语言描述测试目标,AI Agent 就会驱动应用完成操作,再配合传统的定位器(locators)和断言验证结果。本文带你从 0 到 1 认识这个仓库——不写一行代码,也能看懂它的目录结构、核心包分工和阅读源码的最佳路线。

🧭 e2e 测试框架是什么:先搞懂核心价值

如果你用过传统 E2E 测试(如基于选择器和等待脚本的方案),大概都体会过:UI 一改,测试就坏,修复成本极高。e2e 的解法很直接:

  • 目标即测试:用agent.act('升级工作区到 Pro 套餐')这样一句人话描述步骤,Agent 自己找按钮、点输入框;
  • AI 与确定性混合:同一条测试里既能写 AI 步骤,也能写expect(...)精确断言,各取所长;
  • 缓存省成本:被后续断言验证过的 AI 步骤会被录制下来,下次运行直接回放,不再调用模型,又快又省钱;
  • 一份测试,多端运行:同一个测试文件可以跑在 Chromium、iOS 模拟器、Android 模拟器上。

项目入口介绍可以读 README.md,更完整的产品叙事在 docs/index.mdx。

🗂️ 项目结构总览:一个 monorepo 如何分工

e2e 采用 pnpm monorepo 组织,工作区定义见 pnpm-workspace.yaml。顶层目录各司其职:

目录角色一句话说明
packages/📦 发布到 npm 的包核心 SDKe2e+ Web/移动端引擎等
apps/🛠️ 内部自研应用测试靶场 + Web/移动端基准套件
examples/🚀 可运行的示例项目Vite、Next.js、Expo、SwiftUI 各一份
docs/📚 官方文档站Mintlify 搭建,.mdx即页面
skills/🤖 AI 编码代理技能随包发布,e2e init时自动安装

一个很妙的设计:apps/不是给用户看的,而是"框架自测"。比如 apps/testbed/ 是一个刻意做满各种刁钻场景(下载、弹窗、iframe、上传)的靶场应用,用来验证 runner 的每个特性;apps/web-benchmark/ 和 apps/mobile-benchmark/ 则收集了 shadow DOM、canvas、原生弹窗等"高难度 UI"场景,作为 AI 能力的考场。

📦 核心包解读:packages/ 里藏着什么

包源码位置职责
e2epackages/e2e/SDK、测试运行器(runner)、CLI,项目的绝对核心
@e2e-dev/webpackages/web/浏览器引擎:通过 Playwright 驱动 Chromium / Firefox / WebKit
@e2e-dev/mobilepackages/mobile/移动端引擎:iOS 模拟器 + Android 模拟器
@e2e-dev/githubpackages/github/把测试结果以 PR 评论形式回贴的 Reporter
@e2e-dev/kernelpackages/kernel/Kernel 托管浏览器集成
@e2e-dev/easpackages/eas/EAS 托管模拟器集成
@e2e-dev/decisionpackages/decision/有界语义动作/断言的决策模型执行器

几个新手容易忽略的细节:

  1. 契约即代码。项目没有单独的 API 规格文档,公共 API 由构建产物dist/index.d.ts锁定,线格式(wire format)由 packages/e2e/schema/ 下的 JSON Schema 锁定,每个 schema 都配了一对"合法 + 非法"测试样例。这条规则写在 AGENTS.md 的开头,是读懂全仓的第一把钥匙。
  2. 引擎是可插拔的。核心包刻意不认识 "browser"、"page" 这些词(AGENTS.md里明令 grep 零命中),Web 和移动端引擎都通过公开的e2e/engine契约接入,理论上任何人都可以自己写一个引擎。

🔍 代码导读:runner、agent 与 engine 三大模块

如果你愿意打开源码,packages/e2e/src/ 下的目录名就是最好的导读地图:

  • src/run/—— 运行器核心:调度器、并发 worker、重试、会话管理。测试"怎么跑起来"都在这里;
  • src/agent/—— AI Agent 本体:act.ts 负责"干活"(完成目标),配套的 judgment 方法负责"看屏幕"(断言、等待、提取),step-cache.ts 实现"验证过的步骤下次回放"的缓存机制,详见 docs/cache.mdx;
  • src/locator/—— 定位器引擎,把getByRole这类查询编译成 AST 再执行;
  • src/expect/—— 断言体系,带自动重试的轮询式expect;
  • src/oauth/—— 各家模型订阅的登录/取 token 流程,npx e2e login命令就出自这里。

想理解"AI 到底如何一步步操作",建议从 packages/e2e/src/agent/index.ts 入手,顺藤摸到 executor 和 prompts,比从 runner 入手更贴近"AI 测试"这个主题。

🚀 示例项目:examples/ 从 0 到 1 跑通第一个测试

想快速建立"它能跑起来"的信心,examples/ 是最佳起点——四个开箱即用的完整项目,各配一份确定性测试和一份 AI 测试:

示例技术栈说明
with-vite/Vite + React最轻量的起步
with-next/Next.js服务端渲染场景
with-expo/Expo (React Native)Android / iOS
with-swiftui/SwiftUI原生 iOS

以 Next.js 示例为例,配置只有十几个字:声明 Agent 用哪个模型、目标 URL 和启动命令,见 e2e.config.ts。而 AI 测试长这样(节选自 agent.e2e.ts):

// Agent 自己判断该填哪个输入框、点哪个按钮 await agent.act('get the app to greet {name}', { params: { name: 'Grace' } }); // 每一步 AI 操作,都配一个不依赖模型的确定性检查 await expect(screen.getByRole('status')).toHaveText('Hello, Grace!');

对照着看界面就一目了然——这正是示例应用跑起来后的样子:

纯确定性的对照测试在同目录的 greeting.e2e.ts,两个文件并读,就能体会"AI 步骤 + 精确断言"的组合思路。

📚 官方文档与进阶入口

docs/目录是 Mintlify 文档站的源码,每个.mdx就是一个页面,新手建议按这个顺序读:

  1. docs/quickstart.mdx —— 一条命令npx e2e init完成初始化,最省事的入门;
  2. docs/goals.mdx —— 如何用自然语言写测试步骤(AI 测试的灵魂);
  3. docs/locators.mdx —— 定位器查询语法,确定性测试的基础;
  4. docs/agents.mdx 与 docs/models.mdx —— Agent 配置与模型选型;
  5. docs/debugging.mdx —— 报告与调试,测试失败时看什么。

另外,skills/e2e/SKILL.md 是官方发布的"AI 编码代理技能"——把它交给 Claude Code、Cursor 等工具后,"帮我加一个结账流程测试"这类指令就能直接执行,这是 e2e 与 AI 工作流结合的一个亮点。

🎯 新手导读路线:3 步读完这个项目

  • 第 1 步(10 分钟):读 README.md + docs/quickstart.mdx,在examples/with-vite/里跑通第一个测试,建立整体印象;
  • 第 2 步(1 小时):对照本文的目录分工表,浏览packages/e2e/src/的目录名和文件头注释,重点精读src/agent/,理解"目标 → 观察 → 行动 → 断言"的循环;
  • 第 3 步(进阶):翻开 AGENTS.md 和 CONTRIBUTING.md,了解契约锁定方式、安全不变量和基准测试方法——这份文档本身就是理解该项目工程文化的最好材料。

写在最后:e2e 把"AI 的灵活"与"断言的确定"装进了同一个测试文件,再用回放缓存把成本压到最低。从examples/跑起,沿着packages/e2e/src/读下去,你会发现一个 AI 测试框架的骨架其实和传统 runner 并无二致——变化的只是屏幕另一端,多了一位会看屏幕的 Agent。🚀

【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询