Gemini 3.5 · Google ADK · running on Cloud Run

Migrate Selenium and Cypress to Playwright.
Automatically. Verified.

Agents plan the migration, rewrite every file, and run the suite until it passes. You approve once, at the end.

Selenium Python · Selenium Java · Cypress JavaScript

Shiftwright dashboard: the Diagnoser reading a failure screenshot and DOM snapshot, proposing a locator patch
A live frame from a Gemini 3.5 run over a third-party Selenium suite. The Diagnoser is reading the failure screenshot and the DOM to find the locator that broke.

Why legacy suites
never get migrated

Old suites carry the same debt. Hard-coded sleep() calls that trade minutes for flake. XPath chains that shatter on any DOM change. Polling waits over race conditions. The suite is load-bearing, so nobody touches it.

Rewriting it by hand takes weeks. It is a thousand small judgment calls: rote for a person, routine for an agent.

Shiftwright does the rewrite and shows its reasoning as it works. Every failure is diagnosed on screen, from the pixels and the DOM.

Four agents, three planes

Work moves agent to agent as a token you can watch. The sandbox and the knowledge base sit under every step.

In Legacy Selenium repository public URL · cloned read-only into an isolated workspace
Out Draft pull request GitHub App · a new branch, after the human gate — never a commit on yours
the whole run happens between those two, on Google Cloud
Control plane Google Cloud ADK

ADK SequentialAgent · all four on gemini-3.5-flash over Vertex AI, the Diagnoser multimodal

Planner
scores complexity, orders the curriculum
Modernizer
rewrites Selenium into Playwright
Diagnoser
reads screenshot + DOM, patches the locator
Verifier
benchmarks, drafts the PR
Human ✓ approve → PR draft kept
Execution plane one MCP server · Cloud Run

Isolated sandbox driven over JSON-RPC — never your machine, never your branches. Every call carries an ID token.

mcp_ast_parse scan repo → files, locators, anti-patterns
mcp_selenium_baseline time the untouched Selenium suite
mcp_playwright_sandbox_exec run the rewritten test, traced
mcp_trace_inspect DOM + screenshot at the failing step
mcp_kb_query reuse a locator already learned — exact, or Gemma-similar
mcp_kb_upsert write the healed locator back
Knowledge plane Firestore · Memory Bank · GCS

What one test learns, every later test reuses — the reason healing effort trends down across a run. Verified repairs also persist to Vertex AI Memory Bank, so the next repository starts with what earlier ones worked out.

locator mappingshealing recipesflake patternstrace bundlescross-repository repairs
Read how we built it — and watch a run move through it, beat by beat →

Multimodal diagnosis

When a rewritten test fails, the Diagnoser reads the screenshot and the DOM at that instant. It names the root cause and patches the locator. You watch the model read the page.

Live translation stream: Selenium source on the left, generated Playwright appearing line by line on the right

Knowledge compounds

Every verified locator, healing recipe and flake fix lands in a shared knowledge base. Later tests reuse it and pass first try, and the repairs carry to the next repository. The dashboard plots the trend.

Curriculum ordering

The Planner takes the easy files first: fixtures, then leaf pages, then journeys. The knowledge base is rich by the time the hard tests run. 15 files, 2 sleeps and 1 raw XPath gone in the reference run.

One human decision

Agents never push to your branches. The run pauses once, on a diff and the metrics. Approve, and a pull request opens from a bot branch.

Three stacks, one target

The scanner picks the stack from what the repository holds. Every card links to the run its numbers came from.

All three are forks of public MIT suites, cloned read-only. Point it at your own repository and it runs the same way, opening its pull request wherever you control the repo. Speedups pair only tests that passed under both runners; each run record has the per-test timings.

Watch it migrate something real.

Migrate a repository watch a replay of a real run → selenium or cypress in · playwright out · one approval
Shiftwright · Google Cloud "All Things Agentic" entry Gemini 3.5 · Google ADK · Cloud Run