Recording of the visual regression run on spawned.com · Spawned — app walkthrough.

In this video· click a step to jump to it

S
Passed

Test recording

Spawned — app walkthrough

81,038 ms · 1,431,021 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against spawned.com. 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,s)=>screenshotPath.replace('.png','-'+n+'-'+(String(s).replace(/[^a-z0-9]+/gi,'-').replace(/^-|-$/g,'').toLowerCase().slice(0,22)||'view')+'.png');
  let idx=1;
  const cap=async(s,full)=>{ stepLogger.log('Scenario '+idx+': '+s); await page.screenshot({ path: shot(idx,s), fullPage: full!==false }); idx++; };
  const dismiss=async()=>{ for(const re of [/^skip$/i,/skip for now/i,/got it/i,/dismiss/i,/^close$/i,/maybe later/i,/not now/i,/^next$/i,/let.?s go/i]){ await page.getByRole('button',{name:re}).first().click({timeout:800}).catch(function(){}); } await page.keyboard.press('Escape').catch(function(){}); };
  const slowScroll=async(prefix,frames)=>{ const total=await page.evaluate(function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);}).catch(function(){return 3000;}); const vh=await page.evaluate(function(){return window.innerHeight;}).catch(function(){return 900;}); let y=0,seg=1; while(seg<=frames && y < total){ y+=Math.floor(vh*0.8); await page.evaluate(function(yy){window.scrollTo({top:yy,behavior:'smooth'});},y).catch(function(){}); await page.waitForTimeout(1500); await cap(prefix+'-'+seg,false); seg++; } };

  await page.goto('https://spawned.com/',{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:6000}).catch(function(){}); await page.waitForTimeout(1700); await dismiss(); await cap('home');
  await page.goto('https://spawned.com/dashboard',{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:8000}).catch(function(){}); await page.waitForTimeout(2400); await cap('dashboard');
  // Builder — describe an app to build (the core product interaction)
  await page.goto('https://spawned.com/builder/new',{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:8000}).catch(function(){}); await page.waitForTimeout(2600); await dismiss(); await cap('builder');
+16 more lines claim the test to get the full code.

Checks run

Run
Visual
100.00%
Text
DOM
Network
+198 −198
Console
A11y
C
Perf
33 over
URL
Variables
Full report
Log in →
1,431,021
Diff px
1m 21s
Duration
C
Accessible
WCAG 2.2 · 78
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

Spawned is an AI app builder + live marketplace ('build OR launch — on Spawned you do both'). Sign-in is a passwordless email code (via Privy). The authed surface is a real product: a personalised Dashboard ('Welcome back'), a Builder workspace at /builder/new with Preview / Code / Chat / Design tabs and a 'What would you like to build?' prompt, a Project Directory of AI-built apps, and Settings — all reachable from a logged-in session.

Highlights
  • Builder leads with the prompt, not a tour
    /builder/new opens straight to 'What would you like to build?' with Preview/Code/Chat/Design tabs already in view — zero ceremony between sign-in and creating.
  • Build AND distribute in one place
    The Project Directory turns every built app into a discoverable marketplace listing, so makers get a distribution surface for free — a real differentiator vs build-only tools.
  • Passwordless email code
    Privy email-code sign-in means no password to manage; the code lands fast and the session persists.
Friction points
  • Wallet-style display name
    The dashboard greets you as '7j2o…9uKF' (a generated handle) rather than your name/email — fine for a web3 audience, but a first-time non-crypto user may not recognise it as 'them'.
  • /profile and /account 404
    Both /profile and /account return a 'Page not found' for a signed-in user — likely stale links; account settings actually live at /settings.

3 visual changes

Step 83,963 px changed
Before
Before
After
After
Diff
Diff
Step 9233,873 px changed
Before
Before
After
After
Diff
Diff
Step 101,193,185 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
bronze
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
56,331 test runs recorded · 941 products tested with Lastest

This test was built for spawned.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.