AI drafts the tests.You approve what runs.
Evidence-backed Playwright tests drafted from your repository. Nothing runs until your team approves it.
Cart and Checkout › Payment validation
12 candidates · acme/storefront @ 3f9c2ad
- Pinned commit
3f9c2adon main - Mapped application38 routes61 forms47 api calls
- checkout/payment-validation/rejects-expired-card.yaml+0
1+name: Rejects an expired card at checkout2+category: negative · priority: high3+steps:4+ - goto: /checkout5+ - fill: { label: "Card number", value: "4000 0000 0000 0069" }6+ - fill: { label: "Expiry", value: "01/20" }7+ - click: { role: button, name: "Pay now" }8+ - expect: { text: "Your card has expired" }
evidencesrc/routes/checkout.tsx:88src/components/PaymentForm.tsx:142POST /api/paymentsconfidence 0.92 Review requested from M. Ortiz
Request changesApprove- Playwright · chromium · shard 1/3runningPlaywright · chromium · shard 2/3runningPlaywright · chromium · shard 3/3running
- Repositories
- GitHub · Bitbucket
- CI
- GitHub Actions · GitLab CI · Bitbucket Pipelines
- AI tokens per CI run
- 0
Approval is the gate, not a suggestion.
Every generated test walks the same path. The run button only exists for a version a human has approved, and an edit sends it back for review as a new version.
Demonstration data
Drafted from your code, not from a prompt. Generated
Candidates come from a pinned commit: static analysis plus controlled browser discovery, turned into a versioned model of your application.
- Proofline generated v1 from commit 3f9c2ad
Queued for a person, with its evidence. Pending review
Reviewers see the steps, the source files and routes behind them, a confidence score, and what the test covers.
- Review requested from QA
- CI tried to run v1 · blocked, version not approved
Change a step, get a new version. Edited · v2
Edits never rewrite history. The new version goes back to Pending review; earlier runs stay attached to the version that produced them.
- S. Kral edited step 3 · v2 sent back to review
One approval unlocks this exact version. Approved
Approval is recorded against the version, the reviewer, and the time. Rejected and archived candidates never reach a runner.
- M. Ortiz approved v2
Executed by Playwright, in isolation. Running
Approved versions run in resource-limited workers. Membership, permission, billing and approval are checked again right before work begins.
- Queued on 3 shards · chromium · commit 3f9c2ad
Results with everything you need to trust them. Passed
Logs, screenshots, videos and traces stay with the run, recorded against the branch and commit it ran on.
- Passed in 1m 55s · trace, video and screenshots saved
Every candidate shows its work.
A test you cannot trace is a test you cannot approve. Each step links back to the component, route, or API it came from, so review takes minutes, not archaeology.
138<form onSubmit={handlePay}>139 <Field label="Card number" name="number"140 rules={luhn} />1141 <Field label="Expiry" name="expiry"142 rules={notExpired} />2143 {error && <Alert>{error.message}</Alert>}4144 <Button type="submit">Pay now</Button>3145</form>
- 1goto: /checkout
- 1fill: "Card number" → 4000…0069
- 2fill: "Expiry" → 01/20
- 3click: button "Pay now"
- 4expect: "Your card has expired"
- Capability
- Cart and Checkout › Payment validation
- Route
- /checkout
- API
- POST /api/payments
- Category
- Negative
- Risk
- High
- Confidence
- 0.92
Eight categories per capability
- Happy path
- Negative
- Boundary
- Validation
- Permissions
- Error handling
- State changes
- Integration
Organized by what your product does.
Proofline groups tests by the business capability they protect, not the folder the code happens to live in. Your team layers its own modules and tags on top, and regeneration never overwrites them.
- Tests can belong to several modules and carry several tags.
- Archiving a module never deletes its tests, versions, approvals or history.
- Filter by module, tag, capability, route, status, category, priority, branch or last result.
Authentication2
Product Management3
Cart and Checkout3
Demonstration data
Regenerate without losing a reviewed test.
When the code moves, Proofline compares commits and only revisits what changed. Manual, approved, edited and historical tests are always preserved.
a41e07c...3f9c2ad- src/components/PaymentForm.tsx+18−4
- src/routes/checkout.tsx+6−2
- src/features/cart/useCart.ts+3−3
- Cart and Checkout › Payment validation
- Cart and Checkout › Update quantity
- New candidates
- 14
- Marked Needs review
- 3
- Approved tests touched
- 0
Demonstration data · try the menu
Every push runs what you approved, at the exact commit.
Your pipeline sends the repository, branch and commit SHA. Proofline validates the organization, pins the commit, and runs the approved snapshot. No generation happens in CI, so a run normally spends zero AI tokens.
- GitHub Actions
- GitLab CI
- Bitbucket Pipelines
- queuedPushfeature/checkout-v2
- queuedPipeline calls ProoflineGitHub Actions
- queuedValidateorg · billing · permission
- queuedPin commit3f9c2ad
- queuedRun approved snapshot142 tests · Playwright
- queuedReport statusback to the pipeline
Same tests, separate history per branch
- Login validation
- development
- Passed
- qa
- Passed
- production
- Passed
- feature/checkout-v2
- Passed
- Add to cart
- development
- Passed
- qa
- Test failed
- production
- Passed
- feature/checkout-v2
- Passed
- Payment validation
- development
- Passed
- qa
- Passed
- production
- Passed
- feature/checkout-v2
- Test failed
- Product search and filters
- development
- Passed
- qa
- Environment failure
- production
- Passed
- feature/checkout-v2
- Not run on branch
- Passed
- Test failed
- Environment failure
- Not run on branch
- Demonstration data
- The commit SHA is authoritative; a branch name never silently resolves to your default branch.
- Pending, rejected or unapproved tests never run, whoever triggers the pipeline.
- Retries are stored as separate attempts. Test failures are told apart from environment failures.
3,000 tests. Not 3,000 browsers.
Approved tests are balanced into shards by historical duration and run on a bounded, autoscaling worker pool. Plans buy concurrent test slots, not idle servers.
Illustration using the formula total duration ÷ workers + overhead, for 3,000 one-minute tests. Real time depends on retries, startup, uneven workloads, serial tests and how much load your environment accepts.
Reviewed by the people who sign off releases.
Dana Whitfieldapproved· Head of QA, Northwind Commerce The approval gate is the reason we said yes. My team reviews a candidate with its evidence in a couple of minutes, and nothing sneaks into the pipeline.
Rahul Menonapproved· Engineering Manager, Lattice Health Grouping by capability changed our release reviews. We talk about checkout and onboarding coverage now, not about which folder has tests.
Sofia Kralapproved· Staff Engineer, Brightline Freight Pinned SHAs and zero-token CI runs made it easy to put in front of platform. Feature branches finally have their own history.
Placeholder testimonials
Pay for concurrency, not idle servers.
Every plan includes the full review workflow. Plans differ by how many approved tests can run at once. Billing is monthly, quarterly or yearly.
Starter
5concurrent test slots
One team proving out reviewed AI coverage.
Start with StarterTeam
Most teams25concurrent test slots
Product teams running suites on every push.
Start with TeamBusiness
100concurrent test slots
Large suites across many projects and branches.
Start with BusinessEnterprise
Customconcurrent test slots
Configurable capacity, limits and retention.
Set up Enterprise
Included in every plan
- Human approval gate on every test version
- GitHub and Bitbucket repositories
- GitHub Actions, GitLab CI and Bitbucket Pipelines
- Branch- and commit-aware result history
- Logs, screenshots, videos and traces
- Admin, QA and Developer roles
- AI generation quota pooled across projects
Questions reviewers ask first.
Can an AI-generated test ever run without approval?
No. Only approved test versions can execute, from the dashboard, the API, a schedule, a retry or CI. The check happens when a run is queued and again inside the worker right before execution.
How many AI tokens does a CI run use?
Normally zero. CI executes the approved snapshot of your tests with Playwright. AI is only used when you analyze or regenerate.
Which applications can Proofline analyze today?
The first analyzer targets React and TypeScript applications built with Vite. It combines static analysis of routes, components, forms and API calls with controlled browser discovery.
What happens to my tests when I regenerate?
Manual, approved, edited and historical tests are always kept. Incremental regeneration revisits only what changed between commits; duplicates are linked, and affected tests are marked Needs review instead of being replaced.
Which repositories and pipelines are supported?
Repositories on GitHub and Bitbucket. Pipelines on GitHub Actions, GitLab CI and Bitbucket Pipelines, reporting queued, running, passed, failed, cancelled and blocked states.
Does Proofline test production automatically?
No. You choose the environment for each run, and the deployment URL must match the branch or commit you selected.
Who can approve and run tests?
Organizations have Admin, QA and Developer roles. Admins manage users and billing; review and execution permissions are configurable, and every permission is enforced on the server.
Put a reviewer between AI and your pipeline.
Connect a repository, review the first candidates, and run only what your team approves.
- Every generated test is reviewed by a person
- Every run is pinned to an exact commit
- No unapproved version can reach a runner