Free
no card$0
- Analyses
- 30 / mo
- Fix & validate
- 3 / mo
For Playwright Test · Node.js 20.11+
KwikQA reads a failed Playwright run (the JSON report, traces, and test source) and tells you the cause, citing the evidence behind it. When the test itself is at fault, it proposes a small repair, shows you the exact diff, and keeps it only if your tests pass.
npm i -D kwikqaFree plan: 30 analyses and 3 fix & validate runs a month. No card needed.
$ npx playwright test ✘ [chromium] › 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 Model: anthropic/claude-haiku-5.5 via anthropic, effort max Evidence: 12 redacted items from report, trace, source Payload: 4f9c2a7e1b0d83c5... (exactly this 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 --- a/tests/checkout.spec.ts +++ b/tests/checkout.spec.ts - await page.getByTestId("apply-coupon").click(); + await page.getByRole("button", { name: "Apply discount" }).click(); Apply this patch? yes Result: awaiting-validation (patch-applied) $ 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 selected report fields, trace events, and short source excerpts. Secrets and sensitive fields 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
$30 / month
$50 / month
$20 / month
Questions
Node-based Playwright Test 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 is 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 Claude Haiku 5.5 for diagnosis and GPT-6 Luna for repair proposals, through OpenRouter. On the bring-your-own-key plan you can choose your own.
One analysis is one diagnosis sent to the AI. One fix & validate is one repair attempt, 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.