Agents engineered for testing

QA Wolf's agents plan, write, run, investigate, and maintain your end-to-end tests on infrastructure built for it.

Invite your agent to the pack

Honed by automating 100,000+ real-world test cases

An automated test factory continuously improves agent performance. If an agent hits a wall, the issue is recreated as an eval so no agent hits the same wall twice.

Test runs from real work on web, iOS, and Android apps stream past QA Wolf's agent, which runs each one. Nearly every run passes. Once in a while one fails: the problem it hit is rebuilt as a small test app, such as a table whose rows load late, a permission alert, or a bottom sheet, and added as an eval.

QA Wolf agents understand the assignment

An application with multiple billing tiers changed the way they presented user seats to admins. During the release, a bug caused the page to miscalculate the team’s total monthly cost. Only QA Wolf’s test caught the issue.

QA Wolf’s test included additional checks to calculate the expected monthly total.

Claude Code and Codex only checked that elements were on the page.

QA Wolf’s testCaught the bug

  1. test("an admin can see the current plan on billing", async ({ page }) => {
  2. // … sign in as an admin, open Settings › Billing, read the plan's facts
  3. const unitPrice = Number(priceText.match(/\$(\d+\.\d{2})/)![1]);
  4. const billedSeats = Number(seatsText.match(/^(\d+) of/)![1]);
  5. const invoiceSubtotal = Number(invoiceText.match(/\$([\d,]+\.\d{2})/)![1].replaceAll(",", ""));
  6. expect(invoiceSubtotal).toBeCloseTo(unitPrice * billedSeats, 2);
  7. });

Seeded-bug eval

  1. Lines 4–6

    Works out what the invoice should be from the price and seats.

  2. Line 7

    Fails on the bug: expected 384 (16 × $24.00), received 624.

Claude Code’s testMissed the bug

  1. test("an admin can see the current plan on billing", async ({ page }) => {
  2. // … sign in as an admin, open Settings › Billing
  3. await expect(fact("Price")).toHaveText("$24.00 per seat / month");
  4. await expect(fact("Seats")).toHaveText(/^\d+ of 25$/);
  5. });

Seeded-bug eval

  1. Lines 3–4

    Checks the price and seat count are on the page, never the invoice.

Codex’s testMissed the bug

  1. test("an admin can see the current plan on billing", async ({ page }) => {
  2. // … sign in as an admin, open Settings › Billing
  3. await expect(currentPlan.getByText("$24.00 per seat / month", { exact: true })).toBeVisible();
  4. await expect(currentPlan.getByRole("definition").filter({ hasText: /^\d+ of \d+$/ })).toBeVisible();
  5. });

Seeded-bug eval

  1. Lines 3–4

    Checks the price and a seat count are visible, never the invoice.

Investigation at run time, not after

QA Wolf agents run your tests in CI and start reviewing results at the first failure, not hours after the run.Read more

One CI run, with three tests failing as the suite runs. QA Wolf's agents are in the run, so an investigation starts at each failure while the rest of the suite is still running, ending in a repaired test, a bug report, and a repaired test, and every failure is triaged before the run ends. Coding agents aren't in the run: they start only after it, when the logs are handed over, then work through the same three failures one at a time.

  • 76%of tests reviewed by the time a suite ends.*
  • 72%of suites fully triaged within 1 hour.**
  • 92%of updated tests are correctly fixed on the first try.*

*Across all AI Investigation runs, October 2026.
**127 recurring test suites across 73 teams, October 2026. Full report here.

Agents review every failing test

Deterministic results

QA Wolf runs Playwright and Appium tests instead of relying on computer-use agents that never run the same flow twice.Read more

The same build, three runs

Computer use QA

  • Run 1 reached checkout
  • Run 2 reached checkout, another way
  • Run 3 ended in Account: a bug, or lost?

Deterministic Code

  • Run 1 reached checkout
  • Run 2 reached checkout, same steps
  • Run 3 reached checkout, same steps
The same build, run three times. An agent deciding what to click can take a different path each run, so a changed result could mean the product broke or the agent wandered off. A Playwright test takes the same steps every time. An illustration, not recorded runs.

Context from your team and every past run

Coding agents know your app, QA Wolf agents also know your test history, where bugs appear, and what’s happening during a run.

QA Wolf vs humans

*QA Wolf can build up to 10 new tests at the same time.
**127 recurring test suites across 73 teams, October 2026. Full report here.
***Bugs reproduced and filed, or tests updated and re-run. As of October 2026.

For developers

Introduce your agent to QA Wolf.

Add this server to Claude Code, Codex, Cursor or any MCP client, then ask for your first test.

  • Claude CodeInstall
  • CodexInstall
  • Other agentshttps://app.qawolf.com/api/mcp
Setup for each agent

For engineering leaders

See QA Wolf on your app.

Get a walkthrough on your own product and a plan for the coverage you need.

Contact sales
Ask from
  • Slack
  • Teams
  • GitHub
  • GitLab
  • Claude Code
  • Codex
  • Cursor
Send bugs to
  • Linear
  • Jira
Your data

QA Wolf doesn’t train or fine-tune models on customer data. Privacy Policy