preuser is a GitHub App. On every pull request, it spins up your app and an AI user walks it like a person — driven by a plain-English goal — then hands you the recording. No test code. No selectors.
The actual recorded walk, with the agent's trace advancing in sync — ending on the verdict it posted.
Cart shows Acme Circles T-Shirt · Black / L · qty 1 · $15.00
Not just a red or green check. The AI user writes you a sentence on what it experienced — and, when something breaks, exactly where it got stuck. Open any journey to watch the walk.
AI user "Signed up with a test email and reached the dashboard — it rendered with no errors."
AI user "I added the item, but the cart count never updated — so I couldn't get to checkout."
AI user "Searched 't-shirt', the results filtered, and I opened the first product."
Descriptive, in the agent's own words — the part a deterministic pass/fail can't give you.
In a fresh, isolated sandbox — your compose file, or your build + serve commands.
An AI user uses the running app by sight, like a person: signs up, navigates, submits, reads the screen.
A pass/fail per journey and the video, right on your PR — usually in a few minutes.
Keep your tests. preuser adds the one thing they can't.
Deterministic. They assert the logic you can predict — and break when the UI moves.
A non-deterministic, human-like user. It checks whether the real experience still works — no selectors, no fixtures.
Describe what a person is trying to do and what "done" looks like. The agent figures out the path.
# .preuser/config.yml journeys: - name: sign-up-and-land goal: A new visitor signs up and reaches their home screen. success: They're signed in, on their own home, no error.
That's the whole test. No selectors. No Playwright to maintain.
A journey is one walk, re-run on each push. We keep each one lightweight, so it's designed to be cheap — and it's free during the preview.
Drop a plain-English journey in your repo and let an AI user prove the experience on your next pull request.
Thanks — we've got your request.