Point it at a running web app. It explores the interface, infers the business rules that must always hold, then relentlessly tries to break each one — and writes the regression test the moment it succeeds.
Invariant does black-box business-logic testing — no source access, no network exploits. It reasons about what your app claimsto be true, then proves it isn't.
Drives a real Playwright browser — reading the DOM, taking screenshots, and mapping every form and route the way a person would.
Claude turns the interface into explicit rules that must always hold — “a coupon applies once”, “quantity ≥ 1”, “no PAID order without payment”.
It generates adversarial sequences, executes them, and watches for contradictions — then captures the repro and writes a regression test.
Launch a headless browser, capture DOM + screenshots, map the surface.
Claude states the business rules the app must never violate.
Execute edge-case interactions designed to break each invariant.
On a contradiction: capture evidence and emit a Playwright regression test.
No vague “looks suspicious”. You get the violated invariant, expected vs actual, a step-by-step repro, and a runnable spec.
import { test, expect } from '@playwright/test'; // INV-02 — quantity must be an integer >= 1 test('cart rejects negative quantity', async ({ page }) => { await page.goto('/cart'); const qty = page.getByTestId('qty-input'); await qty.fill('-2'); await expect(qty).toHaveValue('1'); });
The live demo runs against a store with three planted invariant violations. It finds all three, every time.