e2e:用自然语言驱动 Web 与移动端端到端测试
一个给 Web 和移动端做端到端测试的框架,用自然语言驱动应用,且能重放已记录的 agent 操作。
GitHub tester-army/e2e 更新 2026-10-06 分支 main 星标 4.8K 分叉 198
TypeScript 端到端测试 Playwright agent-device Web 与移动端

🧭 决策指南

适合,如果你

  • 你要测试 Vite、Next.js、Expo 或 SwiftUI 应用,并希望用 agent.act 描述业务动作。
    README 的 Quick start 和示例代码列出 Vite、Next.js、Expo、SwiftUI,以及 agent.act。
  • 你需要 Chromium、Firefox 或 WebKit 浏览器覆盖,并希望继续使用 Playwright。
    README 的 Packages 章节说明 @e2e-dev/web 通过 Playwright 提供 Chromium、Firefox 和 WebKit。
  • 你已有 API key、订阅或本地模型,并接受 agent 步骤的模型依赖。
    README 明确写有 Bring your own subscription, API key, or local model。

不适合,如果你

  • 你的团队不能接受 1.0 前 API 或配置发生变化。
    README 的 Status 章节写明 APIs and config can still change between minor releases。
  • 你的测试环境不能使用订阅、API key 或本地模型。
    README 说明 agent 步骤需要 Bring your own subscription, API key, or local model。
  • 你的合规要求禁止 CLI 发送命令、引擎和失败位置等匿名数据。
    README 的 Telemetry 章节说明 CLI sends anonymous usage data,并提供关闭遥测的方式。

前置条件

  • 使用 npx e2e init 初始化时,需要选择 engine(web 或 mobile)和 model provider。
  • 含 agent 步骤的测试需要自带 subscription、API key 或 local model。
  • 移动端引擎面向 iOS simulators 和 Android emulators。
  • Web 引擎通过 Playwright 使用 Chromium、Firefox 和 WebKit。

第一步命令(README 原文)

npx e2e init

要注意

  • agent 步骤后续会重放已记录动作,直到 app 发生变化才重新调用模型。
    README 正文说明后续运行在 app 未变化时 no model calls,并会 replay actions。
  • 不含 agent 步骤的测试不需要模型,模型依赖只出现在 agent 流程中。
    README 写明 Tests without agent steps need no model。
  • CLI 默认发送匿名遥测,可用 npx e2e telemetry disable 关闭。
    README 的 Telemetry 章节给出关闭命令,并列出遥测内容范围。

材料未说明

  • README 未说明支持的 Node.js 版本。
  • README 未说明各模型 provider 的具体名称、价格和兼容性。
  • README 未给出 agent.act 与 agent.assert 的执行延迟、稳定性或准确率数据。
  • README 未说明 iOS、Android、Chromium、Firefox 和 WebKit 的最低系统版本。
  • README 未说明 CI 并发能力、资源消耗和大规模测试套件表现。
  • README 未说明 5 个版本之间的完整变更内容。

💡 深度解析

6
适合 我负责包含账单、套餐升级和金额校验的 Web 测试,想让 agent 处理复杂导航,但不能让模型单独决定最终结果;e2e 是否支持这种混合测试?
适合读者: 需要在支付和套餐变更流程中同时使用自然语言操作与确定性断言的全栈测试工程师

适合,e2e 的测试结构正是把自然语言操作与 locator、expect 和断言放在同一个测试中。

  • README 示例先用 agent.act 执行套餐升级,再用 agent.assert 检查 prorated invoice,最后用 expect(screen.getByRole('status')) 验证 Pro 状态。
  • 文档明确说测试可以用自然语言描述目标,并用 locators 和 assertions 检查结果,因此模型不是唯一验证层。
  • 后续断言验证过的 agent 步骤会记录操作并重放,适合重复执行已确认的流程。
  • 对金额、权限和数据变更等关键结果,项目洞察明确要求使用明确的 UI 或接口级验证;不能把 agent 判断当作审计证据。

因此可让 agent 负责探索式交互,但账单金额和最终状态必须继续由确定性检查覆盖。

  • README 引言:Describe a goal in natural language and an agent drives the app to reach it. Check the result with locators and assertions in the same test.
  • README 示例:`agent.act`、`agent.assert` 与 `expect(screen.getByRole('status'))` 同处一个 checkout 测试。
  • 项目洞察 usage_limitations:金额、权限、订单状态、数据一致性等关键结果必须使用明确的 UI 或接口级验证。
  • README 引言:An agent step that a later assertion verifies records its actions.
npx e2e init
材料未说明:README 未说明是否提供直接读取后端账单或订单数据的断言 API。;README 未说明 agent.assert 对金额比较是否支持精确数值、币种和舍入规则。
适合 我用 TypeScript 维护 Web 测试,CI 不能依赖外部模型服务,也不能上传测试内容;我能否让 e2e 使用本地模型,同时关闭 CLI 遥测?
适合读者: 希望把自然语言测试接入 CI、但必须使用本地模型且不能上传测试内容的 TypeScript 测试工程师

适合,README 明确支持本地模型,并提供关闭 CLI 遥测的方式;但模型部署和准确率责任由你们承担。

  • README 写明模型可以来自用户 subscription、API key 或 local model,因此不强制绑定外部服务。
  • CLI 遥测只发送匿名使用数据,例如运行的命令、引擎和失败位置;README 明确不发送测试内容、应用内容或凭据。
  • 可执行 npx e2e telemetry disable,也可设置 E2E_TELEMETRY_DISABLED=1,满足 CI 的显式禁用要求。
  • 文档随 e2e 包进入 node_modules/e2e/docs,编码代理或离线环境可以读取本地文档。

这条路径适合隐私约束明确的 TypeScript CI,但本地模型的兼容接口、资源需求、延迟和决策质量,README 都没有给出保证。

  • README 引言:Bring your own subscription, API key, or local model.
  • Telemetry:CLI sends anonymous usage data ... but no test content, app content, or credentials.
  • Telemetry:Opt out with `npx e2e telemetry disable` or `E2E_TELEMETRY_DISABLED=1`.
  • Documentation:The `e2e` package ships every page ... in `node_modules/e2e/docs`.
E2E_TELEMETRY_DISABLED=1
材料未说明:README 未列出支持的本地模型名称、推理协议、硬件要求或离线安装步骤。;README 未说明禁用遥测后是否影响 CLI、报告器或模型执行功能。
适合 我用 TypeScript 编写 Vite 或 Next.js 测试,并让编码代理在离线环境中生成和修复 e2e 用例;项目是否把足够的文档随 npm 包提供?
适合读者: 使用编码代理维护测试、希望代理在离线 node_modules 环境中读取 e2e 文档的 TypeScript 开发者

适合,README 明确说明 e2e npm 包会携带完整文档,编码代理可以直接从本地依赖读取;但具体模型和代理工作流仍需自行配置。

  • Documentation 章节写明:The e2e package ships every page,位置是 node_modules/e2e/docs,不要求在线访问文档站点。
  • Quick start 提供 npx e2e init,会询问 web 或 mobile 引擎及模型提供方,并生成配置和示例测试,适合作为代理的初始上下文。
  • examples 提供 Vite、Next.js、Expo 和 SwiftUI 独立项目,代理可以用对应技术栈的现成结构作为参考。
  • 项目主语言是 TypeScript,且 SDK、runner 和 CLI 都由 e2e 包提供,与你的 TypeScript 维护方式一致。

它适合文档就地检索和代码生成,但不能据 README 推断代理能自动判断业务断言是否正确。

  • Documentation:The `e2e` package ships every page, so coding agents can read them offline in `node_modules/e2e/docs`.
  • Quick start:`npx e2e init` asks for an engine, web or mobile, and a model provider, then writes a config and an example test.
  • Quick start:examples include Vite, Next.js, Expo, and SwiftUI.
  • Packages:`e2e` is The SDK, runner, and CLI;项目数据 main_language 为 TypeScript。
npx e2e init
材料未说明:README 未说明文档是否包含所有已安装版本对应的 API,或如何处理文档与包版本不一致。;README 未说明编码代理读取文档所需的索引格式、权限和推荐提示词。
视情况 我维护一个 Next.js 应用,需要在 Chromium、Firefox 和 WebKit 上验证“升级工作区套餐”这类业务流程,同时保留明确的 locator 和 assertion;e2e 是否适合替代部分 Playwright 测试?
适合读者: 维护 Next.js Web 应用、需要在 Chromium、Firefox 和 WebKit 上覆盖业务流程的前端测试工程师

视情况,适合把复杂业务意图交给 agent,但不适合全面替代确定性的 Playwright 测试。

  • Web 引擎通过 Playwright 支持 Chromium、Firefox 和 WebKit,能覆盖你的多浏览器约束。
  • 同一个测试可混用 agent.act、agent.assert、locator 和 expect;README 示例正是套餐升级流程。
  • 被后续断言验证的 agent 步骤会记录并在应用未变化时重放,后续运行可减少模型调用。
  • 项目仍处于 1.0 前 active development,minor release 之间 API 和配置可能变化,因此现有稳定 Playwright 用例不应一次性全部迁移。

更合理的边界是让 agent 处理语义导航,让关键状态、权限和金额继续由明确断言验证。

  • Packages:Browser engine: Chromium, Firefox, and WebKit through Playwright.
  • README 示例:`await agent.act('upgrade the workspace to the Pro plan')` 与 `expect(screen.getByRole('status'))`。
  • README 原句:An agent step that a later assertion verifies records its actions, and the next run replays them with no model calls until the app changes.
  • Status:e2e is in active development on the way to 1.0. APIs and config can still change between minor releases.
npx e2e init
材料未说明:README 未说明 agent 在 Chromium、Firefox 和 WebKit 上的行为差异及各浏览器的覆盖成熟度。;README 未说明回放记录的存储位置、失效检测细节和团队协作方式。
视情况 我有一个 Expo 应用,必须在 iOS 模拟器和 Android 模拟器上验证登录、导航和表单流程;e2e 的 mobile 引擎是否能让我用接近 Web 的方式复用测试表达?
适合读者: 维护 Expo 移动应用、需要同时测试 iOS 模拟器和 Android 模拟器的移动端工程师

视情况,e2e 能统一移动测试入口和自然语言表达,但不能据 README 推断 iOS 与 Android 的交互可以完全复用。

  • @e2e-dev/mobile 通过 agent-device 连接 iOS 模拟器和 Android 模拟器,覆盖你的目标运行环境。
  • npx e2e init 会让你选择 web 或 mobile 引擎及模型提供方,并生成配置和示例测试。
  • README 的 examples 明确包含 Expo 独立项目和通过测试的 suite,说明 Expo 是项目展示过的技术栈。
  • 移动测试仍依赖模拟器、应用构建包、权限和初始状态;这些环境条件没有被 init 命令自动解决。

因此它适合先统一业务流程层的写法,但平台特有的权限、导航和控件仍需分别验证。

  • Packages:`@e2e-dev/mobile`:iOS and Android engine: simulators and emulators through agent-device.
  • Quick start:`init` asks for an engine, web or mobile, and a model provider.
  • Quick start:examples include Vite, Next.js, Expo, and SwiftUI, each a standalone project with a passing suite.
  • 项目洞察 common_pitfalls:移动测试需要正确的模拟器、应用构建包、权限和初始状态。
npx e2e init
材料未说明:README 未说明 Expo 具体版本、iOS/Android 系统版本和所需构建产物格式。;README 未说明同一测试在 iOS 与 Android 之间哪些 API 或 locator 可以直接复用。
视情况 我维护一个 SwiftUI 应用,团队希望每个 Pull Request 都运行 iOS 移动端回归,并把结果反馈到 PR;e2e 是否已经提供足够的运行和报告组件?
适合读者: 维护 SwiftUI 应用、团队需要在 Pull Request 中运行移动端回归的 iOS 工程师

视情况,e2e 提供 SwiftUI 示例、iOS 模拟器引擎和 GitHub PR 报告器,但 README 没有证明完整的 PR 移动执行环境已自动配置完成。

  • examples 包含 SwiftUI 独立项目,并注明这些示例拥有 passing suite,可作为接入基线。
  • @e2e-dev/mobile 支持 iOS 模拟器;@e2e-dev/eas 还提供托管 iOS simulators 和 Android emulators。
  • @e2e-dev/github 会把结果作为 pull request comment 发布,匹配团队的反馈渠道。
  • 项目只有 5 个 release,最新版本为 [email protected],且仍处于 1.0 前 active development;升级和 CI 兼容性需要谨慎确认。

若团队已有可启动的 SwiftUI 构建和模拟器流水线,组件组合是可行的;若希望一条命令完成所有 CI 基础设施,证据不足。

  • Quick start:examples include ... SwiftUI, each a standalone project with a passing suite.
  • Packages:`@e2e-dev/mobile` 支持 iOS and Android engine;`@e2e-dev/eas` 提供 hosted iOS simulators and Android emulators。
  • Packages:`@e2e-dev/github` 是 Reporter that posts results as a pull request comment.
  • 项目数据:release_count 为 5,latest_release 为 `[email protected]`;Status 说明仍在 1.0 前 active development。
npx e2e init
材料未说明:README 未说明 GitHub Actions 的完整配置、所需 macOS runner 条件和 SwiftUI 构建命令。;README 未说明 PR 报告器是否支持失败截图、视频和 agent 操作日志。

✨ 核心亮点

  • agent.act 支持用自然语言驱动应用操作
  • agent 步骤可记录并在后续运行中重放
  • Playwright 覆盖 Chromium、Firefox 和 WebKit
  • 支持 iOS 模拟器与 Android 模拟器
  • [email protected] 仍处于 1.0 前活跃开发阶段

🔧 工程化

  • npx e2e init 生成引擎、模型配置和示例测试
  • agent.assert 可验证自然语言步骤的结果
  • e2e SDK 同时提供 runner 与 CLI
  • examples 提供 Vite、Next.js、Expo 和 SwiftUI 项目

⚠️ 风险

  • README 明确说明 1.0 前 API 和配置可能变化
  • agent 步骤需要自带订阅、API key 或本地模型
  • CLI 会发送命令、引擎和失败位置等匿名遥测
  • 模型调用仅在含 agent 步骤且首次运行时发生

👥 适合谁?

  • 使用 Vite 或 Next.js 的 Web 测试团队
  • 使用 Expo 或 SwiftUI 的移动端团队
  • 需要 Chromium、Firefox 或 WebKit 覆盖的团队
  • 希望用自然语言描述业务流程的 TypeScript 团队