Explore once → deterministic spec
AI drives the browser to figure out the flow. What lands in your repo is plain @playwright/test code with semantic getByRole / getByLabel selectors — the agent's job ends at "save".
Describe a flow in plain English; AI drives your realChrome once to explore it. When the run’s clean, Hover crystallises it into a standard @playwright/test spec that runs in CI with zero AI, forever.
No per-token resale — Hover spawns the claude / codex CLI already on your PATH, on your subscription or your own API key.
Not a flat dump — page objects, test.step stages, a community seed library, and an optional AI polish pass you accept via diff. See what shipped.
Describe a flow in plain English. Hover drives your real Chrome.
› export the sales report as CSV
import { test, expect } from '@playwright/test'; test('export sales report', async ({ page }) => { await page.goto("/reports"); const [ download ] = await Promise.all([ page.waitForEvent('download'), page.getByRole('button', { name: "Export CSV" }).click(), ]); expect(download.suggestedFilename()) .toContain(".csv");});Works where you already build. One npx @hover-dev/cli setup detects your bundler and wires it up — no config.
AI drives the browser to figure out the flow. What lands in your repo is plain @playwright/test code with semantic getByRole / getByLabel selectors — the agent's job ends at "save".
Other AI-testing tools keep a model in the loop when the test runs — every PR, every nightly pays for LLM calls. Hover spends the model once, at authoring time. Green builds never pay a recurring tax.
Hover bundles no AI runtime. It spawns whatever coding-agent CLI is on your PATH — claude, codex, cursor-agent, aider — on the Pro / Max / ChatGPT plan you already pay for, or your own model API key dropped into the widget (kept in your browser, injected into the CLI env, never uploaded).
Vite, Astro, Nuxt, Next.js (Turbopack), webpack 5 — plus React Native Web. Every verified session crystallises two ways: a Playwright spec for CI and a Jira-importable test case.
Nothing lives in a vendor database. A spec written on a laptop on Monday is reviewed by QA on Tuesday and runs in CI from Wednesday — same file, no export step.
<slug>.spec.ts<slug>.case.csvAdd @hover-dev/security and the panel grows a Security mode. Hover routes your debug Chrome through a local HTTPS MITM, the agent inspects the captured API calls and replays them with mutations, and confirmed findings crystallise into .security.spec.ts regression tests that run in CI — no proxy, no agent. Today’s IDOR becomes a gate on every PR.
Zero external deps — no mitmproxy, no Python, no system CA. Probes run on your own dev server; authorised testing only.
We checked every cell against each vendor’s own docs. Where a tool publishes no public pricing, we say so instead of guessing a number.
✓ yes · ◐ partial · ✕ no · – not applicable. QA Wolf and Momentic do not publish public pricing; figures elsewhere online come from third-party aggregators, so we describe their model rather than quote a number.
On “Generated spec guards every step”, ✕means the tool leans on Playwright’s runtime auto-wait instead of writing an explicit per-step visibility assertion into the saved code. It still waits at run time; the artifact just carries no guard of its own.
Fact-checked against each vendor’s own docs (2026): Momentic · QA Wolf · Playwright codegen · Stagehand · Midscene.
Hover saves a clean, portable spec, then grows it into an architecture: page objects and fixtures lifted from flows repeated across specs, named test.step stages, popup / new-tab pairing, a community-extensible seed library, and an optional AI pass that polishes a spec while always keeping the deterministic original. All shipped, all still plain Playwright with no agent in CI. Next: a Chrome extension and Hover Cloud. Follow along on GitHub.
When a login or setup flow recurs across saved specs, Hover lifts it into a shared Page Object plus a fixture, so the selectors live in one file instead of five.
Saved flows wrap their actions in named test.step(...) stages, so the Playwright HTML report reads as logical steps instead of a flat action list.
A click that opens a payment popup or OAuth tab crystallises with the Promise.all listener pairing Playwright needs, so the saved spec drives the new tab without a race.
A .hover/conventions.md in your repo (which flows matter, where login lives, your preferred selectors) feeds the agent at exploration time, so generated specs follow your house style.
The optimization pass learns from a library of worked examples — built-in for common patterns like downloads, and extensible: you or the community add a seed in .hover/rules/ to teach a new pattern, no fork, no plugin code.
AI reads a generated spec and proposes a polished version you accept via a diff — observed assertions added, buggy behaviour flagged // KNOWN BUG. The deterministic original is always kept and the pass is off by default.
Drop the bundler-plugin dependency so Hover can drive any tab — staging URLs, third-party sites, multi-origin flows. Likely a separate repo; loses source attribution, gains universal page coverage.
A hosted layer over the specs you author locally: intent-driven self-heal, test-rot detection, AI failure diagnosis. Authoring stays local and free; CI still runs plain Playwright.
Hover bundles no AI runtime and resells no tokens. It rides on the Claude Pro / Max or ChatGPT plan already on your machine — so authoring costs nothing beyond what you pay today, and CI never pays at all.
A hosted layer that keeps the specs you author locally alive — re-recording the ones UI drift breaks, flagging the ones gone stale. Authoring stays free and local; CI still runs plain Playwright.
Everything on this page works right now with npx @hover-dev/cli setup. Cloud keeps the specs you author locally alive with AI — it re-records the ones UI drift breaks and flags the ones that have gone stale:
CI still runs plain Playwright — the AI works on what already ran (a broken spec, a flaky one), never on a green build. Authoring stays local and free. Leave your email and we’ll tell you when it’s ready; no spam, just the launch.
Email only · no spam · just the launch
getByRole / getByLabel selectors, never CSS or XPath. When the semantics shift, click ⟳ Re-record (or hover re-record <spec>) — the agent replays the original prompt against the current UI and rewrites the spec in ~30 s for ~$0.10. You can also hand-edit the plain Playwright file, or treat a real flow break as a regression the test correctly caught.Add Hover to your dev server in one command. Keep the deterministic Playwright files forever.