Free
$0
- 10 analyses a month
- 3 fixes a month
For Playwright, Cypress, and WebdriverIO
KwikQA reads a failed run, finds the cause, and cites the report, page, and source lines behind it. When the test itself is at fault, it proposes a small repair and keeps it only if your tests pass.
npm i -D kwikqaFree: 10 analyses and 3 fixes a month. No credit card. Node.js 20.11+.
$ npx playwright test ✘ checkout.spec.ts:18:5 › applies a discount code 1 failed · 41 passed $ npx kwikqa analyze Diagnosis request -> the KwikQA service, which forwards it to OpenRouter Evidence: 12 redacted items from report, trace, source Payload: 4f9c2a7e1b0d83c5... (exactly this redacted payload is sent) Send this request? yes #1 The spec clicks test id "apply-coupon"; the trace shows data-testid="apply-discount", role button "Apply discount". owner: test-support, evidence: strong Result: diagnosed (test-support-owned) $ npx kwikqa fix - await page.getByTestId("apply-coupon").click(); + await page.getByRole("button", { name: "Apply discount" }).click(); Apply this patch? yes $ npx kwikqa validate Result: repaired (validation-passed)
After a red run
Each one stops at a clear result, so you always know what happened and what comes next.
npx kwikqa analyzeDiagnoses the failures in your latest report. Every cause cites the report fields, trace events, or source lines that support it, and KwikQA says so when the evidence isn't enough.
npx kwikqa fixWhen the cause belongs to the test, proposes a repair. You see the intent it preserves, the exact diff, and the validation commands before you approve it.
npx kwikqa validateReruns the failing test in a fresh process. A pass keeps the patch. Anything else rolls back exactly what KwikQA changed. One retry, then it stops.
Repair policy
A green build is easy to fake. KwikQA checks each proposal against these rules before you see it, and rejects the ones that break them.
Edits that skip or focus tests, add fixed waits or retries, accept broad snapshots, or swallow errors are rejected.
A repair that removes an assertion, or uses any matcher fewer times in a file than before, is rejected. KwikQA can change how a test reaches the behavior, never what it accepts.
Only the paths your reviewed kwikqa.config.json allows. Never application code, dependencies, lockfiles, or generated files.
A proposal touches at most 3 files and 100 changed lines. Anything larger comes back as a manual recommendation instead of a truncated patch.
Each AI request shows its model, evidence, cost cap, and payload hash before it is sent. Applying a patch always asks, even with --yes.
Files you have already modified are off limits, and rollback restores only the bytes KwikQA wrote.
What leaves your machine
KwikQA builds the packet locally from your failing tests: selected report fields, trace events or the Cypress and WebdriverIO command log, the page elements around each failed locator, the accessibility snapshot of the page, and short source excerpts. Secrets, password fields, and sensitive values are removed before you see the preview. Screenshots and videos are described by size only; their pixels are never sent, and neither are full files or your repository.
OPENROUTER_API_KEY.Pricing
When you reach a limit, KwikQA stops before sending anything and tells you. Local-only analysis is always free.
$0
$20 / mo
$25 / seat
$10 / mo
$15 / seat
Analysis: KwikQA diagnoses why the tests in one failed run failed. Fix: it proposes a repair, applies it after you approve, and keeps it only if your tests then pass. A failed fix gets one free retry.
Paid plans are coming soon; until then, everyone uses Free. Team plans start at 3 seats and share one monthly pool. Annual billing gives you two months free. Compare plans
Node-based Playwright Test, Cypress (end-to-end), and WebdriverIO (Mocha or Jasmine) projects written in TypeScript or JavaScript, in a git repository, on macOS, Linux, or Windows, with dependencies already installed through npm, pnpm, or Yarn. Playwright 1.55 and 1.64, Cypress 16.2, and WebdriverIO 10.1 are verified; other versions run with a warning.
Then KwikQA says so. A repair needs positive evidence that the fault belongs to test code. When the evidence points at the application or the environment, you get the diagnosis and where to look, and no patch.
analyze can, with --yes and a token from your dashboard. fix cannot, because a person approves every patch. See Running in CI.
Hosted plans use models from Anthropic and OpenAI, chosen for each task and reached through OpenRouter. Before anything is sent, each request's preview names the exact model that will answer it. On BYOK plans you choose your own.
One analysis is one diagnosis sent to the AI. One fix is one repair attempt, validated by npx kwikqa validate, and its one retry is included. Requests you decline, local-only analysis, and requests that fail before an answer arrives don't count. Plans and usage has the details.
Install, sign in with GitHub, and analyze the failures you already have.