Turn any old website into an API
Record the flow once, parameterise the inputs, call it like an endpoint.
- Inputs like
{account}become request parameters - Structured output — what the operator read, not a DOM scrape
- Every run keeps its evidence
It drives your product in a live browser, reads the screen the way a tester does, and turns what it did into real Playwright tests — with screenshots and traces to prove it.
Free while in early access · no card · nothing to install on your site.
Five things QA Reef does, playing out on a mock app. Not a video — the page is driving itself.
You drive once. It records every action and writes the Playwright.
Waiting for the agent…
Waterfront rooms above the old harbour
Quiet courtyard stay near Alfama
The outline builds as the agent works.
The app changed and the locator broke. It finds the button by what it says on screen.
Waiting for the agent…
Waterfront rooms above the old harbour
#book-btn not found#book-btn → role=button name="Reserve now"A 2004 portal with no usable selectors. It reads the screen and clicks what it sees.
Waiting for the agent…
The same flow, parameterised, called like an endpoint.
Waiting for a request…
GET /county/lookup?parcel=
A deployment appears; the suite crawls it before anyone clicks Promote.
Waiting for a deployment…
Five stops, nothing hidden: open the generated test, read the trace, see which model made which click.
Drive your app in a recorded browser, or describe the goal and let the operator drive by reading the screen.
Steps land in a timeline you can reorder or delete. A flow is a named, replayable recording.
The flow becomes real Playwright, with model-proposed assertions stamped decided_by for you to review.
Every run keeps a screenshot and a trace. Verdicts are PASS, FAIL or UNMEASURED — never a forced false fail.
A failing run files a bug with the evidence attached, and the flow surfaces in Maintenance.
If a person can do it in a browser, a flow can do it on request.
Record the flow once, parameterise the inputs, call it like an endpoint.
{account} become request parametersCounty portals, ERPs behind a login, vendor back-offices. No integration to buy — but there is a screen, and QA Reef reads screens.
decided_by with its costNo CAPTCHA solving. Ever. If a site challenges the agent, the run stops and hands the screen to a person.
Anywhere the DOM churns but a human eye still knows exactly what to click.
Drawing zones on a canvas, verified by what's on screen
Whiteboards, diagram editors and floor-plan tools render into one <canvas> — nothing for a selector to grab. It finds the tool, the handle and the shape by what is on screen, draws, and checks the result visually.
Panning a map, hitting the pin it can see, checking the card that opens
Slippy maps and GIS viewers redraw tiles on every pan and hide pins inside one canvas. It works from the rendered map: pans, zooms, clicks the pin it can see, and checks the popup appeared.
Typing into a hosted card field, then approving the 3-D Secure challenge
Hosted card fields live in a third-party iframe and 3-D Secure opens another, often cross-domain. It types into the frame it can see and follows the challenge, using your provider's test cards.
Signing in, then reading the one-time code off the test inbox
SSO, magic links and one-time codes break brittle scripts. It drives the sign-in like a person and reads the code from the test inbox or a TOTP secret you supply. It does not solve CAPTCHAs — ever.
Attaching a fixture file and waiting for the preview to show up
Native pickers, drag-to-upload zones and preview thumbnails are invisible to DOM-only tools. It attaches the fixture, watches the upload finish on screen, and checks what should appear afterwards.
The long tail: every surface where a person can still see what to click
The same screen-first approach covers the long tail. If a person can do it in a browser, it can be recorded as a flow and turned into Playwright.
Product facts, not customer metrics — we don't have those yet and won't invent them.
“The first mapping session found a checkout path nobody on the team had a test for.”
“UNMEASURED saved us from chasing a ‘failure’ that was just the staging box being asleep.”
“We pointed it at a county portal with no API and had a scheduled pull running the same afternoon.”
No. Drive your app and it records the clicks, or describe the goal and the operator reads the screen. Either way you get real Playwright code, selectors included — you are never stuck depending on OCR at test time.
Anything a check could not actually observe — a page that never loaded, a flaky network hop — gets forced into FAIL by most runners. Runs here carry a third state instead. More in the blog post.
Record the flow once and parameterise the inputs. It runs on request or on a schedule and returns structured output with the evidence. No API on the target site required — details on the website → API page.
No, never. If a site challenges the agent, the run stops, records the screen as evidence, and hands it to a person. QA Reef automates the work a person is already allowed to do in a browser; it does not defeat access controls. More on the legacy system automation page.
The core — flow runtime, engine adapter, OCR-driven operator, the cost-logging LLM adapter and evidence storage — is MIT-licensed under packages/core. The hosted app is not part of that core.
Closed "coverage as a service" platforms pair a managed runner with human QA engineers. This one looks similar at the surface, but the automation core is open source, the operator reads the screen instead of needing stable selectors, and every model decision is cost-logged. There is no managed human-verification service. Sourced comparison on the compare page.
Leave an email and we'll reach out when there's a seat — or skip the form and talk to the people building it.