Skip to main content

Love Playwright? Keep it. agent-qa is for the tests you're tired of maintaining, and it remembers.

Playwright is a superb browser automation engine you program in TypeScript, Python, or Java. agent-qa operates a layer above: you state intent in plain English and the runtime plans, executes, adapts, and remembers.

Try agent-qa, the source-available AI layer that turns test intent into runs that remember.

agent-qa vs Playwright

Capabilityagent-qaPlaywrightDetails
Plain-English authoringPlaywright tests are code, powerful, but every flow is programming work. agent-qa tests state user intent in natural-language YAML that anyone on the team can read and review.
Survives UI changesPlaywright selectors and assertions break when the UI shifts, and a human fixes them. agent-qa re-plans from intent, caches the corrected plan, and records the change in memory.
Execution memoryPlaywright starts every run stateless. agent-qa accumulates file-backed behavioral memory, making later runs faster and more reliable.
Source accessPlaywright is open source; agent-qa is source available under FSL-1.1-ALv2. Both keep tests in the repo with no required platform or seats.
Local and CI executionBoth run from a laptop, CI job, or automation pipeline with source-controlled commands.
Mobile app testingPlaywright targets browsers (with experimental Android support). agent-qa covers native Android and iOS flows with the same YAML contract as web.
Coding-agent nativePlaywright has MCP-based browser control for agents; agent-qa ships a full agent QA loop, MCP tools, Skills, run artifacts, failure classification, and memory.
Selector maintenanceagent-qa eliminates the selector-upkeep tax that consumes most Playwright suite maintenance time. 'Yes' here means no selectors to maintain.

Why teams add agent-qa alongside Playwright

Stop paying the selector tax

Mature Playwright suites spend more engineering time on upkeep than on new coverage, every redesign breaks locators that encoded yesterday's DOM. agent-qa tests encode intent, so the runtime re-derives the steps when the UI moves on.

Coverage at the speed of English

A new Playwright spec is a programming task. A new agent-qa test is a paragraph. Teams cover the long tail of flows, the ones nobody had time to script, because writing them costs minutes, not hours.

Your coding agents get a QA loop, not just a browser

Playwright MCP lets an agent drive a browser; it doesn't give it a testing discipline. agent-qa gives agents the whole loop: author from product context, validate, run, read artifacts, classify failures, and remember, via MCP tools and packaged Skills.

Playwright is a brilliant engine for programmed browser automation. agent-qa is the layer above it, intent in, verified behavior out, memory retained. Most teams need the layer more than another script.

Frequently asked questions

Does agent-qa replace Playwright?

It replaces the hand-written E2E layer for many teams, and complements Playwright for others. If your pain is authoring and maintaining flow tests, agent-qa's natural-language tests with memory remove most of that work. Teams with deep custom automation keep Playwright for it and let agent-qa own the user-flow regression layer.

Is agent-qa licensed like Playwright?

No. Playwright uses the Apache 2.0 open-source license; agent-qa source is available under FSL-1.1-ALv2 and transitions to Apache 2.0 under its future-license terms. Its tests, config, hooks, memory, and artifacts remain files in your repository.

What does agent-qa cost compared to Playwright?

Playwright is free under Apache 2.0. agent-qa has no paid tier or license fee for FSL-permitted use, but it consumes model calls, reduced by its plan cache, from whichever LLM provider you configure. The operating-cost comparison is therefore engineer-hours, LLM tokens, and infrastructure.

Can I migrate my Playwright tests to agent-qa?

Yes, and it's usually simplification: each spec's intent, 'sign in, add item to cart, verify total', becomes a short plain-English YAML test. You delete selector logic rather than porting it.

Is natural language reliable enough for CI?

agent-qa is built for exactly that: deterministic YAML contracts, cached action plans reused across identical runs, file-backed memory reducing exploration, and artifacts plus failure classification for every step. It behaves like a test harness, not a chatbot.

Sources

This page is based on public product and documentation sources. Verify current features and pricing with each vendor before making a purchase decision.

Where agent-qa pulls ahead of Playwright

The parts of agent-qa that answer what Playwright leaves you carrying.

Natural-language tests

Describe actions and assertions in natural language. agent-qa resolves them against the live interface using visible roles, labels, and screen state.

Learn about natural language tests

Natural-language YAML

Write the behavior and expected outcome in plain English. The test stays as reviewable YAML in your repository.

Targets users recognize

Refer to “New issue,” “Checkout,” or the “Issues table.” agent-qa finds the matching control in the live interface.

One format, every surface

Use the same natural-language structure across web, Android, and iOS without maintaining selector-heavy variants.

Execution memory

A run that passes leaves evidence: elements that resolved, a flow that worked, and timings that are real. agent-qa distils that evidence into durable facts, procedures, cautions and measurements. Each becomes a reviewable bundle committed next to your tests. Nothing steers a run until the evidence says it should, and once it does, the next run replays what already works instead of deriving it again.

Learn about memory

Bundles you can review

Each thing learned is a directory in your repository: the record, the evidence behind it, and the artifacts that justify it. Read it in a pull request.

Proven before it is used

New knowledge is born a candidate. Offline replay and attributed evidence from live runs decide whether it ever reaches a planner.

Warm runs get faster

A flow that already worked is replayed rather than re-derived, and stale facts are superseded instead of quietly served.

Self-healing execution

When a sub-action fails, because the click was intercepted, the control moved, or the field will not take the value, agent-qa re-observes the screen and plans another route to the same step, inside the same run. What it will not do is find another step: a recovery has to reach what you asked for, so a route to a different outcome is declined rather than taken, and the run fails with the reason it found.

Learn about self-healing

Re-observe, then re-plan

A failed sub-action is not retried. The screen is read again and the next attempt is planned against what is actually on it.

Bounded by the step

A recovery has to reach what the step asked for. A route that would reach a different outcome is declined, not taken.

The trace stays honest

Every attempt is recorded: what failed, what was tried, and what was refused. A healed step never reads as a clean one.

Sandboxed hooks

Run Node, Bun, Python, or Bash scripts in isolated Docker containers: before a test as setup, at one specific step during the run, or after it finishes as teardown. Set up environments, call APIs, seed fixtures, tear down state, and pass structured output back into the active run.

Learn about hooks

Four runtimes

Write the script in Node, Bun, Python, or Bash. Each runtime has its own hook runner image.

Isolated execution

The container is read-only, capped on CPU, memory, and pids, and can be denied the network entirely.

Structured outputs

A script returns values by writing a dotenv file. Later steps read them back as variables.

* This comparison is based on publicly available information. Product capabilities and pricing can change; verify details with each vendor before making a purchase decision.