用你的 AI Agent 自动并行运行大量浏览器测试
Playwright MCP 每次只能通过一次工具调用来驱动浏览器,速度慢且消耗大量 Token。现在,Claude Code 或 Codex 只需几行代码,就能在 ego (lite) 中运行完整测试:速度提升 2.4 倍,还能并行执行多个测试,每个测试都在独立的 Space 中运行。
开口说一句,就能跑浏览器测试
比如我让 codex 检查这个电商网站有没有 bug。Codex 会跑完整个测试,把 bug 都修好,再告诉我结果。我唯一要做的就是刷 Tiktok,看它干活。
同一个页面在屏幕上从错乱变回正常
产品页面显示异常。 Agent 会在 ego (lite) 中检查页面、修复源代码中的 CSS,打开的页面随即会在屏幕上正确地重新渲染。
用 ego (lite) 极速运行浏览器测试
传统的浏览器测试通常使用 Playwright MCP 或 Chrome DevTools MCP,一次只执行一个工具调用;每一步都要等待模型读取上一步结果,因此既慢又昂贵。现在,Agent 可以借助 ego (lite),用一段 JavaScript 一次执行多个步骤,完成得更快,也消耗更少的 Token。
| ego (lite) | Playwright MCP | Chrome DevTools MCP | |
|---|---|---|---|
| Agent 如何驱动它 | 通过 /ego-browser Skill | 外部 MCP 服务器,每个操作都要一次工具调用。 | 外部 MCP 服务器,每个操作都要一次工具调用。 |
| 设置 | 零配置,任何 Agent 都能用。 | 要 npx 安装、配置启动模式,还常碰到启动失败和找不到 Chrome 的错误。 | Remote debugging, user-data-dir, cross-host setup. |
| Token 使用量 | 低。没有 MCP 工具 schema 的开销,只有 Agent 主动记录的内容会进入上下文:每一轮只取一次快照,而不是每个操作后都取。 | 高。用户报告 Token 消耗增长至 6 倍,并出现 20 万 Token 的上下文溢出。 | 高。截图非常消耗 Token。 |
| 登录状态 | 你自己的已登录浏览器,登录状态和你的 Chrome 一致 | 默认是隔离浏览器;要带上登录状态,得用扩展模式或配置 storage-state。 | 可以附加,但会占用你正在使用的标签页。 |
| iframe / Shadow DOM / SDK 小部件 | 它的页面快照直接在渲染引擎里生成,所以这些结构内部它都读得到。 | 辅助功能快照存在 iframe 盲点。 | 原始 DOM,你自己处理。 |
| 控制台 / 网络 / 跟踪 | 控制台、网络和跟踪数据,直接读取自 Chrome DevTools。 | 控制台、网络、屏幕截图。 | 最深入:Lighthouse、性能、内存。 |
| 定位器稳定性 | 锚定在语义标签上,类名改了也不受影响。 | 基于 ref / 无障碍信息定位,比较稳定。 | 原始 DOM 选择器。 |
| 验证码 / 机器人检测 | 真实的真人会话,最不容易触发检测。 | 独立 / 无头浏览器,经常被网站标记。 | 附加到现有浏览器时表现更好,但会占用你的标签页。 |
| 并行任务 | 天生支持通过 Spaces 同时运行多个任务。 | 每个服务器只有一个会话;要并行就得自己管理多个隔离实例。 | 单实例,标签页一多就崩溃。 |
麻烦从来不在浏览器,而在中间那一层。
在开发者论坛和问题追踪平台上,大家最常抱怨的是 MCP——它位于 Agent 与浏览器之间,容易出现连接中断、审批堆积、会话失效和 Token 消耗激增等问题。ego (lite) 已经把一切配置好,不再需要处理这些莫名其妙的错误。
浏览器本身没问题,出问题的是到它的连接。
- 连接: 工具明明列出来了,Agent 却不去调用;任务卡在“等待批准”上不动;同一个服务器在不同客户端里的表现还不一样
- 审批: 每次工具调用都要弹窗一次,一个任务往往要弹 10 到 30 次,就算开了“全部运行”也一样
- 可靠性: 任务跑到一半就停,或者页面明明已经跳转成功,却仍然报超时
没有中间层:ego (lite) 本身就是浏览器
- 从设计上就稳定: Agent 直接和自己掌控的本地浏览器通信,中间没有会掉线或卡住的 MCP 传输层
- 审批更少: 一趟跑完多个步骤,而不是每个操作一次工具调用
- 可预测: 任何 AI Agent 即插即用,每次用法都一样
不写测试脚本,不维护选择器,说一句要检查什么就行。
使用 Playwright、Cypress 或 Selenium 测试时,你需要编写测试并维护选择器;类名一改或布局一调整,测试就可能失效。ego (lite) 接收自然语言检查要求,并根据元素的实际含义来定位,因此 UI 变化不会轻易破坏测试。
测试脚本你来写,选择器你来维护
- 手写并用版本管理维护
.spec,你想覆盖的每个流程都得来一份 - 写死类似
page.click(".btn-x7f3")这样的选择器,下次 UI 一改就失效 - 得自己加等待和重试,来对付时好时坏的测试
- 要测登录后的页面,得先搭登录自动化或准备 storage-state 文件
- 每次改版后都要重跑并修补测试套件
说一句要检查什么就行
- 不用写测试脚本:一句话告诉 Agent 要检查什么
- 按元素的语义而非 CSS 类名定位,改名或调整布局都不会让它失效
- 智能等待自动处理异步内容,不用手写 sleep
- 无需登录自动化,直接测登录后的页面
- 需要视觉回归测试吗?Agent 对比截图
如果需要在 CI 中无人值守运行的版本化无头测试套件,或要跨 Firefox 和 WebKit 测试, 就继续用 Playwright。ego (lite) 则是在开发过程中快速、无需脚本的内部迭代工具。
AI Agent 如何操控 ego (lite)
Agent 通过编写一段完整的 JavaScript 程序来驱动浏览器。一次调用打包全部步骤:打开商店、添加商品、等待结账页面,然后在浏览器里按顺序执行。Agent 不必等一个操作返回,再发下一个。
那些常让浏览器测试时好时坏的因素,它都能应对
我们测试了开发者公认最难自动化的场景,Agent 借助 ego (lite) 全部顺利完成。它的语义 Snapshot 直接在 Chromium 渲染引擎内部生成,因此可以看见注入脚本无法访问的 Shadow Root 和跨文档 iframe。
Shadow DOM
Acts inside web-component shadow roots, where injected scripts go blind.
Payment iframes
Fills card fields inside cross-document iframes, like a Stripe checkout.
Custom date pickers
Picks a date range in a custom calendar with no test ids.
Drag and drop
Real HTML5 drag: moves a kanban card, the board follows.
Infinite scroll
Scrolls a lazy feed until every item is loaded, no hand-tuned waits.
Paginated tables
Walks every page of an admin table and pulls each row.
Conditional modals
Cookie banners and dialogs that pop up mid-flow get handled, not tripped over.
Autocomplete
Types an address, waits for the suggestions, picks the right one.
点击落在被遮挡或被禁用的按钮上时,会被记为失败而不是误判通过,和正规测试框架的处理方式一致。
已登录的浏览器,依然由你掌控
把 Agent 放进你已登录的浏览器里,确实值得先停下来想想。下面是它的边界。
它在自己的 Space 里工作
Agent 在浏览器内独立的工作区中运行,共享你的登录状态,但不会碰你的标签页和窗口。
每一步都看得见
Mac 上真实可见的浏览器,而不是藏在后台的无头进程。你可以实时旁观运行过程,随时从 Agent 的 CLI 里中断。
任何数据都不会离开你的 Mac
历史记录、Cookie 和会话都保留在你的电脑上,ego (lite) 不会上传这些数据。
如果流程有真实副作用,比如会真扣款的结账、会真删除的操作,就把 Agent 指向 localhost 或预发布环境, 就像你手动测试那样.
使用步骤
三步完成 Web 应用测试:把 Agent 指向 localhost 或任意 URL,说清要检查什么,再读回失败结果。
一款你日常使用的 Chromium 浏览器。一键导入 Chrome 登录状态,Agent 就能以你的身份测试。
该让它测什么?
/ego-browser 打开 localhost:3000,走一遍结账流程,告诉我哪里坏了
输入 /ego-browser 然后用你的 Agent 听得懂的任何语言,说一句要检查什么就行。
| 页面 | 结果 |
|---|---|
| /checkout | 好的 |
| /product/gift-card | 控制台错误 |
| /product/camera | 图片 404 |
每个出问题的页面都会附上能解释原因的控制台错误或失败请求,而不只是一个通过或失败。
ego (lite) 适用与不适用的场景
为快速的开发内循环而生:边开发边重现、调试、验证。
ego (lite) 擅长什么
开发内循环,跑在真实浏览器里。
- 在真实、已登录的浏览器里重现并调试 bug
- 无需登录自动化,直接测试登录后的流程
- 读取控制台错误、失败的请求和页面状态
- 在多个页面上并行做探索性检查
- 在发现 bug 的同一会话里验证修复
什么时候该用 Playwright
边界说得清楚明白。
- 在 CI 中无人值守运行的无头回归测试套件(ego (lite) 是一款有界面的 Mac 浏览器)
- 跨 Firefox 和 WebKit 测试(ego (lite) 基于 Chromium)
- 一套由你提交、由你维护的版本化确定性测试套件
给你的 Agent 一个真正的浏览器来跑测试
下载 Mac 版 ego (lite)FAQ
不需要。你带上已经在用的 AI Agent,比如 Claude Code、OpenAI Codex 或 Cursor,用大白话告诉它要检查什么。浏览器操作步骤由 Agent 来写、来跑。没有要维护的 .spec 文件,也不用手写 CSS 选择器,因为 ego (lite) 会从页面的语义快照中定位元素。
Playwright MCP 是一个 MCP 服务器,Agent 的每个操作都需要一次工具调用;15 个步骤就意味着模型往返 15 次,速度慢且 Token 消耗高。ego (lite) 本身就是浏览器:Agent 在真实登录的浏览器中编写一小段 JavaScript,一次执行多个步骤。我们使用 Opus 4.8 在 Claude Code 中测试同一项任务时,ego (lite) 约 18 秒完成,只需 2 次模型往返;Playwright MCP 则约需 43 秒和 9 次往返。ego (lite) 还可以并行运行多个测试任务,每个任务都位于自己的 Space 中,这是单个 MCP 浏览器无法实现的。
可以,而且这正是它的强项。ego (lite) 就是你日常用的浏览器,本来就处于登录状态,Agent 可以直接测试仪表盘、内部管理后台和账户流程,你不用先搭一套登录自动化。它表现得就像真实的真人会话,比无头或新启动的浏览器更不容易触发验证码或机器人检测。
每个任务都在自己的 Space 里运行。Space 是同一浏览器内的独立工作区,就像同一份浏览器配置文件多开的几个窗口。Spaces 共享你的登录状态,但各自有自己的页面,所以并行任务既不会互相干扰,也不会碰你正在用的标签页。在网站看来,这只是一个已登录用户开了几个标签页。如果你的应用限制每个账户只能有一个活跃会话,就把这些流程逐个运行,或者改用测试账户。
可以,具体方式是:Agent 先截一张基准截图,再截一张新的,逐像素对比,然后告诉你哪里变了、变成了什么样。做对比的是你浏览器里的 Agent,不用再单独搭一套视觉测试产品,也就不需要接 Percy 或 Chromatic。如果你要的是带审核流程和 CI 门禁的托管基线服务,专门的视觉测试工具仍然更合适。
目前不行。ego (lite) 是 Mac 上一个真实可见的浏览器,为开发过程中的测试而生:重现 bug、调试、验证修复、批量检查页面。至于在 CI 中无人值守运行的无头测试套件,或跨 Firefox 和 WebKit 的测试,请继续用你的 Playwright 测试套件。ego (lite) 是快速的开发内循环,不是 CI 运行器。
真实用户会撞上的功能和运行时问题:走不通的流程、点了没反应的按钮、未捕获的 JavaScript 错误、失败的网络请求、控制台报错、算错的数值。Agent 会读取页面状态,加上控制台和网络信息,所以它能报告哪里失败、因何失败,而不只是给个红绿结果。
Agent 在自己的 Space 里工作,不会动你的标签页和窗口;一切都发生在一个真实可见的浏览器窗口里,你可以随时旁观,也随时能从 Agent 的 CLI 里中断它。你的浏览数据留在自己的电脑上:ego (lite) 不会上传你的历史记录、Cookie 或会话。对于有真实副作用的流程(比如会真扣款的结账),就像你手动测试那样,把 Agent 指向 localhost 或预发布环境。如果你接入了外部 Agent 或模型服务商,其数据政策以对方为准。