In this video· click a step to jump to it
Test recording
UserTrack — app walkthrough
81,299 ms · 8,599 pixels changed
We built this regression test for usertrack.dev — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against usertrack.dev. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const shot = (n, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36' });
await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/connect.facebook.net/**', function (r) { r.abort(); }).catch(function () {});
// ── Step 1: public home (context) ───────────────────────────────────────
stepLogger.log('Step 1: Public home');
await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
await page.waitForLoadState('networkidle', { timeout: 2500 }).catch(function () {});
await page.locator('h1, main').first().waitFor({ state: 'visible', timeout: 10000 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe created an account on usertrack.dev, verified by email, ran your onboarding and walked all eight signed-in surfaces with a product ('Lastest') registered. Thirteen steps recorded end to end. The standout is how honest the empty state is: instead of fake numbers, every panel names the one thing blocking it, and the Next Actions strip turns that into two buttons.
- Empty state that instructs instead of apologisingOverview shows 0 users but pairs it with 'Publish your page' and 'Connect an activation source'. The dashboard is useful on day zero, which is the hardest day to design for.
- Agent-first onboarding stepStep 3 hands a written brief to Claude Code / Cursor / Codex with a 'Copy to LLM' button rather than making you read integration docs. We have not seen another tracker do this.
- One URL fills the whole product recordTyping lastest.cloud pre-filled name, description, icon and category. Correcting one field beats typing five.
- Benchmarks refuse to guess'Benchmarks compare public, verified products' is shown instead of an invented percentile. Matches what you have been posting about not seeding fake rows.
- Nothing tells you the digest is empty before you open itWeekly Digest offers 'Preview this week' but a fresh account has no movement to preview, so the click lands on a blank week. A disabled state with 'available after your first sync' would set expectations.
- One critical accessibility violation on the signed-in appOur axe-core pass scored 95 with 1 critical rule failing across the /app surfaces. Worth a single audit pass now while the surface count is still small.
3 visual changes
Share this run
Proof your app is not AI slop
This test was built for usertrack.dev — 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.








