Recording of the visual regression run on usepostbox.com · Postbox — register + app walkthrough.

In this video· click a step to jump to it

U
Passed ✓

Test recording

Postbox — register + app walkthrough

61,204 ms · 50,725 pixels changed

We built this regression test for usepostbox.com — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against usepostbox.com. Claim it into your own workspace and re-run it on every deploy — free.

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  // Demo identity (fresh per run, traceable to Viktor's inbox via plus-addressing).
  const DEMO_EMAIL = '[email protected]'•••'Lastest-Demo-202605131108!';
  const DEMO_NAME = 'Lastest Demo';

  const shot = (n, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
  const settle = () => page.waitForLoadState('networkidle').catch(() => {});

  // ─── Public phase (always runs) ───────────────────────────────────────────
  stepLogger.log('Scenario 1: Homepage');
  await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
  const accept = page.getByRole('button', { name: /accept|allow|got it|ok$/i });
+171 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
35.42%
Text
—
DOM
✓
Network
—
Console
✓
A11y
—
Perf
—
URL
✓
Variables
—
Full report
Log in →
50,725
Diff px
1m 01s
Duration
—
Accessible

Notes from the demo run

AI-generated

Postbox positions itself as the data-collection layer that AI agents talk to, not as another forms product. The brand is unusually disciplined for an indie: dark theme, a single red accent on CTAs and the active sidebar route, and a logomark that stays consistent between the marketing site and the authenticated dashboard. The post-signup onboarding is the strongest narrative moment: rather than a generic 'create your first thing' wizard, it forks the user into one of two named paths, 'Skill-compatible coding agent' (Codex, Claude Code, Cursor, Windsurf) or 'MCP-compatible client' (Claude, ChatGPT, Cursor, other MCP clients), with a 'Set up manually instead' escape hatch at the bottom. The authed surface itself is small and confident: Dashboard, Forms, Knowledge Base, plus three Integrations entries (API Keys, MCP, Skill). The bottom-left credits indicator (50 of 50 credits) plus the user email + plan tier signals usage-based metering without making it the lead.

Highlights
  • Agent-first onboarding fork
    The 'Choose how you want to connect' modal asks one question, do you have an agent (Skill) or an MCP client, and routes setup accordingly. Most products start with 'create your first form'; Postbox starts with 'what are you using to read this data'. Strong signal that the product is designed for AI consumers first, humans second.
  • Single-line install hook on /integrations/mcp
    /integrations/mcp shows a Server URL field (https://usepostbox.com/mcp) plus a ready-to-paste JSON config snippet for the user's MCP client. Auth happens browser-side on first connect, zero copy-paste friction and no API token bootstrapping ceremony.
  • Credits-as-trust
    Bottom-left of the chrome shows '50/50 credits left' for a Free Plan user. Putting the remaining quota in the chrome (not hidden behind a Billing route) makes the metering feel transparent rather than predatory.
  • Breadcrumb chrome on every page
    Every authed page shows a 'Postbox / <Section> / <Subsection>' breadcrumb in the top bar plus a global search hotkey (Cmd+K). Small detail, but it means the surface scales beyond 3 levels without a UX redesign.
Friction points
  • Onboarding modal blocks all navigation
    After signup, the 'Choose how you want to connect' modal renders on top of every authenticated route. Visiting /forms, /knowledge_base, or /integrations directly all show the same modal, not the target page. The 'Set up manually instead' link in the modal footer is the only escape; without it, a returning user who closed the tab mid-onboarding is stuck on the modal forever. A small 'skip for now' close button in the modal chrome would prevent that.
  • Signed-in toast races the modal hydration
    Post-signup landing was a 'Signed in.' toast on top of an empty onboarding modal, with the modal body filling in a moment later. For a slow-connection visitor this could read as a flash of empty space before the modal hydrates.
Couldn't reach
  • /integrations/api-keys/new·Would create an API key in the user's database. Skipped to keep the run side-effect free.
  • /bug-report, /contact·Both render forms a click away from submission, would write to the founder's inbox if triggered. Skipped.
  • Github OAuth connect on /settings/account·Redirects to github.com which Playwright cannot complete from a clean runner identity.

2 visual changes

Step 11,055 px changed
Before
Before
After
After
Diff
Diff
Step 549,670 px changed
Before
Before
After
After
Diff
Diff

Share this run

57,604 test runs recorded · 1,174 products tested with Lastest

This test was built for usepostbox.com — claim it free

One click copies the test and baseline screenshots into your own Lastest workspace. Re-run on every deploy and catch regressions before your users do — free, no card required.