Unlike tests — like humans

Your tests are green.
Does your app actually work?

A passing test suite proves your code runs. It can't prove a human can sign up, find a product, or check out. preuser sends an AI user to actually use your running app — any workflow, in plain English — once per PR or against any live URL, and hands you a clear pass/fail with a video of exactly what happened.

Sign-in offers GitHub or Google · free during the preview

Point it at any live URL …or run it on every PR Video receipt every time
CI · unit tests all green
checkout.spec.ts
CheckoutService.calculates_tax4ms
CheckoutService.applies_discount2ms
PaymentForm.validates_card_number1ms
CartReducer.adds_line_item1ms
OrderTotal.sums_with_shipping3ms
PayButton.renders_enabled6ms
248 passed · 0 failedin 3.1s
Every assertion holds. Nobody ever clicked the button.
green ≠ working
green ≠ working
AI user · live URL tests missed this
request-access failed

Submitted the form and got "Something went wrong on our end." — no confirmation. A real visitor is stuck.

preuser.ai/request-access
Watch the real run ↓
an AI user walked it in an isolated sandbox
Why preuser

Some bugs only show up when someone actually uses it.

Tests prove the logic you predicted, module by module — but the worst bugs hide in the spaces between modules, where a real person clicks the wrong thing first and the flow falls apart. preuser is the user who finds them before your users do, and shows you exactly where.

The experience preuser
opens the page
adds to cart
fills checkout
completed it

Can a real person complete the journey?

↑ the layer tests can't see
The logic your test suite
auth.test.ts api/cart utils checkout.spec

Does each module do what you coded?

Step 1 · the journey you write

Just say what you want exercised.

One goal and what success looks like, in the plain English you'd use with a teammate. That's all an AI user needs to go walk it like a human — on your next PR, or any URL.

.preuser/config.yml
# one journey = one walk, re-run on every PR
journeys:
  - name: add-to-cart
    goal: A shopper picks a product, chooses its
          options, and adds it to the cart.
    success: The cart shows the chosen item —
             colour, size and quantity — with no error.
  1. 1
    You describe the goal

    One goal sentence — what a person is trying to do. No CSS, no data-testid, no waits.

  2. 2
    You name what success looks like

    The success line is the contract the independent grader checks against the final screen.

  3. 3
    preuser does the rest

    It spins up your app, walks the goal vision-first, and grades the result — every PR, no maintenance.

Step 2 · the result you get

Here's exactly what you get back.

The real run, not a mock: the verdict, a video receipt of everything it saw, the timeline of what it tried, and how the journey felt to walk.

AI-user run · one mission
Journey running In progress

Waiting for a slot Your run is in line and starts automatically the moment a slot frees.
An AI user is getting ready to use your app live — the frame below updates as it acts.
This is not the app under test failing. The run errored on infrastructure before reaching a verdict — no pass / fail verdict was reached. Any footage below is the walk so far.
Target app
Duration
Steps
Driver
An AI user

Video receipt

capturing…
live frame — the page the AI user is on right now
Recording live
Getting your AI user ready
Typically 20-60 seconds on a cold start.
Each step is real infrastructure — nothing is faked. The walk starts the instant your app responds.
Waiting to start

The video records once the run begins. This page updates live — leave it open.

No receipt — run errored before a verdict

The app never became reachable, so there was nothing to record. This is infrastructure, not your app.

Video unavailable

The status above stands, but a video receipt is not available right now. If setup logs are present, they appear below.

This browser couldn't play the recording

This browser rejected every available receipt format. The verdict and timeline still reflect the completed run.

What the AI user is doing
Right now
What the AI user is thinking
…and doing
Working out the next move…
Working out the next move… live
An AI user tried your running app — the video is the receipt.
00:00
All events
The same AI user, on a form that's broken
failed request-access

Submitted the form and got "Something went wrong on our end." — no confirmation. A real visitor is stuck.

Video receipt
See the full run — every step + timeline
Get started

You don't even write the journey.

Open your dashboard, and the preuser plugin in Claude Code or Codex reads your app and drafts the journeys for you — ready to point at a live URL or run on your PRs.

Claude Code or Codex · in your repo
# 1 · install the preuser plugin
/plugin marketplace add preuser-ai/preuser-plugins
/plugin install preuser@preuser-plugins

# 2 · then run, or ask Codex to use $preuser:
/preuser:setup

preuser  reading your app…
        · detected your stack: Next.js · npm
        · drafted .preuser/config.yml — 4 journeys
        · shows you the diff, then opens the PR on your OK
  1. 1
    Open your dashboard

    Sign-in offers GitHub or Google — a Google session gets the URL product; GitHub unlocks per-PR runs on your repos.

  2. 2
    Run setup in your agent

    The plugin reads your app, drafts the journeys, and shows you the plain-English diff to approve.

  3. 3
    Open your next pull request

    An AI user walks every journey and posts the pass/fail with a video, in a few minutes.

Open your dashboard

Free during the preview. No test code, no workflow rewrite. Request preview access for URL runs or setup help.

Meet your app's first user.

Open your dashboard and let an AI user walk your app before anyone else does — a live URL right now, or your next pull request.

Visit the dashboard to request access — sign in with Google or GitHub.