OnAssert checks each change against its ticket in a real browser and records the evidence. A QA engineer approves every verdict, and the tests are delivered to your repository.
acme/storefront#482
Checkout: show the delivery estimate on phones
Sample run for illustration
Delivery estimate appears under the shipping options
2 screenshots
The estimate updates when the postcode changes
3 screenshots
On a 390 px phone the estimate does not cover the Pay button
1 screenshot, measured
A paid order completes
Needs a test card
Evidence for the failure
Approved by a QA engineer
Published to the team after review
Tests delivered as acme/storefront#483
2 Playwright tests for the passed requirements
AI can click through an app. The hard part is trusting what it says. OnAssert treats every verdict as a claim that needs evidence, and a person checks the evidence before your team relies on it.
Step 1
OnAssert reads the pull request, its description and the diff, and writes down the behaviour the change promises, one requirement per line.
Step 2
An agent opens your preview build in a real browser, at desktop and phone widths when layout matters. It clicks, scrolls and measures, and takes a screenshot of every result.
Step 3
Every verdict waits as a draft. A QA engineer checks it against the evidence, corrects anything unsupported, then publishes it to your team.
Step 4
Requirements that passed become plain Playwright tests, opened as a pull request in your repository, ready for your CI.
Three things, each one you can check yourself.
Pass, fail, partial or not tested, each with the screenshots and measurements behind it. Failures come with steps to reproduce, written for the developer who has to fix them.
A QA engineer has read the evidence. If a verdict was not supported, it was corrected, and the run shows what changed and why.
Standard Playwright for the requirements that passed, sent only when a reviewer chooses to deliver them. They arrive as a pull request, so your team reviews them like any other code.
// acme/storefront#482: delivery estimate at checkout
import { test, expect } from '@playwright/test';
test('estimate shows under shipping options', async ({ page }) => {
await page.goto('/checkout');
await page.getByLabel('Postcode').fill('2000');
await expect(page.getByText('Arrives Thu 16 Oct')).toBeVisible();
});OnAssert gets the least access it needs to check a change, and every limit below is enforced by the system, not by a promise.
Coming next: a security pass on every pull request
Checks for missing security headers, unsafe cookies, keys left in page code, and pages the change opened up without a login. It only looks. It never attacks your site.
We connect one repository and run OnAssert on the pull requests your team is already shipping, with a QA engineer reviewing every verdict. You judge it on your own code, and you keep every test it writes.