Visual QA, fix, verify
The same page goes from broken to right, on screen
The product pages render broken. The agent looks at them in ego(lite), fixes the CSS in the source, and the open page re-renders correct on screen.
AI browser testing for your coding agent
Playwright MCP drives the browser one tool call at a time: slow and heavy on tokens. Now Claude Code or Codex runs the whole test in ego(lite) with a few lines of code: 63% faster than agent-driven Playwright, and runs many tests in parallel, each in its own Space.












Web app testing in three steps: point your agent at localhost or any URL, say what to check, and read back what failed.
Download ego(lite)
A Chromium browser you use daily. One click imports your Chrome logins, so the agent tests as you.
Tell your AI agents what to check
Type /ego-browser and just say what to check, in any language your agent understands.
What should it test?
/ego-browser Open localhost:3000, go through checkout, and tell me what’s broken
Read back what failed
Each broken page comes back with the console error or failed request that explains it, not just a pass or fail.
| Page | Result |
|---|---|
| /checkout | OK |
| /product/gift-card | console error |
| /product/camera | image 404 |
For example, I ask codex to check if the this e-commerce website has any bugs. Codex will run the whole test, fix all the bugs and tell me the result. The only thing I need to do scroll Tiktok and watch it work.
Visual QA, fix, verify
The product pages render broken. The agent looks at them in ego(lite), fixes the CSS in the source, and the open page re-renders correct on screen.
The old way to run browser tests is to use Playwright MCP or Chrome DevTools MCP, which runs one tool call at a time: each next step waits for the model to read the last result, slow and expensive. Now agents are able to run many steps in one pass of JS code with ego(lite), so it finishes faster and costs fewer tokens.
63% faster
Across our 31-task benchmark on live sites, ego(lite) averaged 398 seconds per task against 648 for agent-driven Playwright (measured via playwright-cli).
| Dimension | ego(lite) | Playwright MCP | Chrome DevTools MCP |
|---|---|---|---|
| How the agent drives it | Through /ego-browser the skill | External MCP server. One tool call per action. | External MCP server. One tool call per action. |
| Setup | No setup, works with any agent. | npx install, launch modes to configure, frequent launch and Chrome-discovery errors. | Remote debugging, user-data-dir, cross-host setup. |
| Token use | Low. No MCP tool schemas, and only what the agent logs enters context: one snapshot per pass, not one after every action. | High. Users report 6x token growth and 200K-token context overflows. | High. Screenshots are token-expensive. |
| Login state | Your own logged-in browser. Same as the login state of your Chrome | Isolated browser by default; carrying logins means extension mode or storage-state setup. | Can attach, but grabs the tabs you're using. |
| iframe / shadow DOM / SDK widgets | Its page snapshot is built into the rendering engine, so it reads inside all of them. | Accessibility snapshot has an iframe blind spot. | Raw DOM, you handle it yourself. |
| Console / network / trace | Console, network, and traces, read straight from Chrome DevTools data. | Console, network, screenshots. | Deepest: Lighthouse, performance, memory. |
| Locator stability | Anchors to semantic labels, survives class changes. | Refs / accessibility, fairly stable. | Raw DOM selectors. |
| CAPTCHA / bot detection | Real human session, least likely to trip it. | Separate / headless browser, often flagged. | Better when attached, but grabs your tabs. |
| Tasks in parallel | Born to support many tasks running at once via Spaces. | One session per server; parallel runs mean managing extra isolated instances. | Single instance, large tab counts crash it. |
Across developer forums and issue trackers, complaints are most about the MCP, It’s the layer between your agent and the browser: the connection drops, the approvals pile up, the session breaks, the tokens balloon. ego(lite) has everything setup, so no more weird errors.
The browser works. The connection to it doesn’t.
Fighting the layer before you test
Nothing in between: ego(lite) is the browser itself
Download then ask your agent to run the test
Playwright testing, Cypress testing, Selenium: you write the test, you own the selectors, and a class rename or a reshuffled layout breaks them. ego(lite) takes a plain-language check and locates elements by what they mean, so a UI change doesn’t break the test.
You write the spec, you maintain the selectors
.spec for every flow you want coveredpage.click(".btn-x7f3") that break the next time the UI changesTons of code to write, selectors to babysit
Just say what to check
Free. Just tell your agent what to check
For a versioned, headless suite that runs unattended in CI, or for testing across Firefox and WebKit, keep Playwright. ego(lite) is the fast, zero-script inner loop while you build.
The agent drives the browser by writing one complete JavaScript program. A single call bundles every step: open the store, add a product, wait for checkout, and runs them in sequence inside the browser, so the agent never waits for one action to return before sending the next.
We ran the scenarios developers say are hardest to automate. With ego(lite), agents handled all of them. Its semantic snapshot is generated inside the Chromium rendering engine itself, so it sees into shadow roots and cross-document iframes where injected scripts go blind.
Acts inside web-component shadow roots, where injected scripts go blind.
Fills card fields inside cross-document iframes, like a Stripe checkout.
Picks a date range in a custom calendar with no test ids.
Real HTML5 drag: moves a kanban card, the board follows.
Scrolls a lazy feed until every item is loaded, no hand-tuned waits.
Walks every page of an admin table and pulls each row.
Cookie banners and dialogs that pop up mid-flow get handled, not tripped over.
Types an address, waits for the suggestions, picks the right one.
And a click that lands on a covered or disabled button is reported as a failure, not a false pass, the same way a real test framework treats it.
Letting an agent loose in the browser you’re signed in to is a fair thing to pause on. Here is where the boundaries are.
The agent runs in a separate workspace inside the browser. It shares your logins, but your tabs and windows stay untouched.
A real, headed browser on your Mac, not a hidden headless process. Watch the run live, and interrupt it from your agent’s CLI at any point.
History, cookies, and sessions stay on your computer. ego(lite) doesn’t upload them.
And when a flow has real side effects, a checkout that charges or a delete that deletes, point the agent at localhost or staging, the same way you’d test it by hand.
Built for the fast inner loop: reproduce, debug, and verify while you develop.
The inner loop, in a real browser.
Honest about the boundary.

Download ego(lite) for free and give your AI agents a browser they can actually use.