In this video· click a step to jump to it
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');Checks run
Notes from the demo run
AI-generatedSpawned 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.
- 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 placeThe 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 codePrivy email-code sign-in means no password to manage; the code lands fast and the session persists.
- Wallet-style display nameThe 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 404Both /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
Share this run
Proof your app is not AI slop
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.








