In this video· click a step to jump to it
Test recording
LaunchPact — app walkthrough
64,387 ms · 9,043 pixels changed
We built this regression test for www.launchpact.io — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.launchpact.io. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const SITE = baseUrl || 'https://www.launchpact.io';
// Inline storage state (cookies + localStorage from a fresh registered account).
// Workaround for setup-orchestrator bug where setupOverrides.extraSteps with
// storage_state stepType is silently ignored when the repo has no default_setup_steps.
const STATE = {"cookies": [{"name": "sb-kfouibjalzspdzcuwueu-auth-token", "value": "base64-eyJhY2Nlc3NfdG9rZW4iOiJleUpoYkdjaU9pSkZVekkxTmlJc0ltdHBaQ0k2SW1aak1tRXhZVEptTFRjNU9UQXROREF4WlMxaE5EWTJMVE14TWpVNVpqTTJaamRsWWlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcGMzTWlPaUpvZEhSd2N6b3ZMMnRtYjNWcFltcGhiSHB6Y0dSNlkzVjNkV1YxTG5OMWNHRmlZWE5sTG1OdkwyRjFkR2d2ZGpFaUxDSnpkV0lpT2lJNE0yUTBNalEyTWkxaFlUVmtMVFEzTTJRdE9HTTFOQzFpTURCaVptSTNORGd6TWpVaUxDSmhkV1FpT2lKaGRYUm9aVzUwYVdOaGRHVmtJaXdpWlhod0lqb3hOemd3TVRZMk1qY3lMQ0pwWVhRaU9qRTNPREF4TmpJMk56SXNJbVZ0WVdsc0lqb2liR0Z6ZEdWemRHTnNiM1ZrSzJ4aGRXNWphSEJoWTNSdGNIRjNaMjE0WkVCbmJXRnBiQzVqYjIwaUxDSndhRzl1WlNJNklpSXNJbUZ3Y0Y5dFpYUmhaR0YwWVNJNmV5SndjbTkyYVdSbGNpSTZJbVZ0WVdsc0lpd2ljSEp2ZG1sa1pYSnpJanBiSW1WdFlXbHNJbDE5TENKMWMyVnlYMjFsZEdGa1lYUmhJanA3SW1WdFlXbHNJam9pYkdGemRHVnpkR05zYjNWa0syeGhkVzVqYUhCaFkzUnRjSEYzWjIxNFpFQm5iV0ZwYkM1amIyMGlMQ0psYldGcGJGOTJaWEpwWm1sbFpDSTZkSEoxWlN3aWNHaHZibVZmZG1WeWFXWnBaV1FpT21aaGJITmxMQ0p6ZFdJaU9pSTRNMlEwTWpRMk1pMWhZVFZrTFRRM00yUXRPR00xTkMxaU1EQmlabUkzTkRnek1qVWlmU3dpY205c1pTSTZJbUYxZEdobGJuUnBZMkYwWldRaUxDSmhZV3dpT2lKaFlXd3hJaXdpWVcxeUlqcGJleUp0WlhSb2IyUWlPaUp3WVhOemQyOXlaQ0lzSW5ScGJXVnpkR0Z0Y0NJNk1UYzRNREExTnpneU1IMWRMQ0p6WlhOemFXOXVYMmxrSWpvaU5qZzNOR0UxTWpFdFlqUmxNaTAwTkRObExUbGpNV1l0TlRSaVpUQXdPVFZpTVRjNElpd2lhWE5mWVc1dmJubHRiM1Z6SWpwbVlXeHpaWDAudnRvY2ZZYlpfd0tBcy1hV3NOSmgzcGNRUzFiLUdYNTZoclZIdm92bTJJcW5ueEdTYS1KWWgzU1UzRXBNdTdmSXRlQjQ2UUtVRFNqZFBoOUs5bmRRcHciLCJ0b2tlbl90eXBlIjoiYmVhcmVyIiwiZXhwaXJlc19pbiI6MzYwMCwiZXhwaXJlc19hdCI6MTc4MDE2NjI3MiwicmVmcmVzaF90b2tlbiI6InRhbXM2em1oMmdpdCIsInVzZXIiOnsiaWQiOiI4M2Q0MjQ2Mi1hYTVkLTQ3M2QtOGM1NC1iMDBiZmI3NDgzMjUiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwicm9sZSI6ImF1dGhlbnRpY2F0ZWQiLCJlbWFpbCI6Imxhc3Rlc3RjbG91ZCtsYXVuY2hwYWN0bXBxd2dteGRAZ21haWwuY29tIiwiZW1haWxfY29uZmlybWVkX2F0IjoiMjAyNi0wNS0yOVQxMjozMDoyMC44ODQxNzNaIiwicGhvbmUiOiIiLCJjb25maXJtZWRfYXQiOiIyMDI2LTA1LTI5VDEyOjMwOjIwLjg4NDE3M1oiLCJsYXN0X3NpZ25faW5fYXQiOiIyMDI2LTA1LTI5VDEyOjMwOjIwLjg5NjE4MVoiLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwidXNlcl9tZXRhZGF0YSI6eyJlbWFpbCI6Imxhc3Rlc3RjbG91ZCtsYXVuY2hwYWN0bXBxd2dteGRAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiODNkNDI0NjItYWE1ZC00NzNkLThjNTQtYjAwYmZiNzQ4MzI1In0sImlkZW50aXRpZXMiOlt7ImlkZW50aXR5X2lkIjoiMDdmZjViNWMtNTEyNC00OGE2LTg0YTctNjdhMDU1YjUwNWY1IiwiaWQiOiI4M2Q0MjQ2Mi1hYTVkLTQ3M2QtOGM1NC1iMDBiZmI3NDgzMjUiLCJ1c2VyX2lkIjoiODNkNDI0NjItYWE1ZC00NzNkLThjNTQtYjAwYmZiNzQ4MzI1IiwiaWRlbnRpdHlfZGF0YSI6eyJlbWFpbCI6Imxhc3Rlc3RjbG91ZCtsYXVuY2hwYWN0bXBxd2dteGRAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJwaG9uZV92ZXJpZmllZCI6ZmFsc2UsInN1YiI6IjgzZDQyNDYyLWFhNWQtNDczZC04YzU0LWIwMGJmYjc0ODMyNSJ9LCJwcm92aWRlciI6ImVtYWlsIiwibGFzdF9zaWduX2luX2F0IjoiMjAyNi0wNS0yOVQxMjozMDoyMC44NzQ4MjZaIiwiY3JlYXRlZF9hdCI6IjIwMjYtMDUtMjlUMTI6MzA6MjAuODc0ODhaIiwidXBkYXRlZF9hdCI6IjIwMjYtMDUtMjlUMTI6MzA6MjAuODc0ODhaIiwiZW1haWwiOiJsYXN0ZXN0Y2xvdWQrbGF1bmNocGFjdG1wcXdnbXhkQGdtYWlsLmNvbSJ9XSwiY3JlYXRlZF9hdCI6IjIwMjYtMDUtMjlUMTI6MzA6MjAuODA3NTk5WiIsInVwZGF0ZWRfYXQiOiIyMDI2LTA1LTMwVDE3OjM3OjUwLjY2MDYzWiIsImlzX2Fub255bW91cyI6ZmFsc2V9fQ", "domain": "www.launchpact.io", "path": "/", "expires": 1814722672, "httpOnly": false, "secure": false, "sameSite": "Lax"}], "origins": [{"origin": "https://www.launchpact.io", "localStorage": [{"name": "launchpact:ga_client_id", "value": "223020809.1780039196"}]}]};
// Block third-party noise so console-error mode doesn't false-fail us.
await page.route('**/*', (route) => {
const u = route.request().url();
if (/cloudflareinsights|cdn-cgi\/scripts\/.*\/cloudflare-static\/email-decode|googletagmanager|google-analytics|hotjar|posthog|segment|fullstory/.test(u)) {Checks run
Notes from the demo run
AI-generatedLaunchPact's marketing site nails the founder-network pitch with a strong hero ("Launch today. Get upvoted. Shine together."), an unusually clean 5-step explainer, and an FAQ that pre-empts the cynical reader. Inside the app, the registration is a single short form that drops you straight onto a working dashboard with a real launch feed (15 upcoming launches on day one, pact requests, trust score), and the standout product moment is /launches/new: paste any URL and the site fetches a screenshot + AI-drafted name, tagline, description, and category in under a minute. Zero forms-from-scratch, which is the right call for a launch-day tool aimed at builders short on time.
- Zero-form launch authoringPaste a URL and the site scans it, drafts a name, tagline, description, screenshot, and category. The auto-imported draft for app.lastest.cloud was usable as-is, just needing a date. This is the kind of friction-reducer launch-prep tools are usually missing.
- Real feed on day one/feed shows 15 actual upcoming launches (Typeroid, Agentline, InkieAI, TableAI, Second Brain Cloudflare). A demo product on launch day usually has empty states everywhere; LaunchPact already has a live network.
- Trust score as a first-class conceptNew user dashboard shows Trust Score 50/100 with "New" badge and a clear path to grow it. Trust system explained on the marketing page is reinforced inside the product, not buried in a help doc.
- Crisp FAQ on PH mechanicsSpecific numbers ("500-1,200 quality-weighted upvotes for Product of the Day in 2026") + honest stance on bought-upvotes. Reads like a founder's blog post, not legal copy.
- Signup form has a Google OAuth button right above Create accountVisually the order is: Continue with Google, divider, Email, Password, Create account. An evaluator using a password manager can accidentally land on the Google button first. Re-ordering or a slightly heavier divider would help.
- Dashboard zero-state could lead harder with Create LaunchBoth Create Launch and Browse & back launches share the same hero. Create Launch is the higher-intent flow for a new founder; making it the primary CTA might convert more first-session activations.
- Scan site needs a clearer in-progress signalBetween clicking Scan site and the draft appearing there is roughly 10 seconds with no progress indicator. The page just sits on the empty form. A skeleton or progress bar showing what is being fetched (screenshot, copy, category) would reduce "did I click it?" anxiety.
- /pricing·Free during MVP — pricing page reiterates the free tier from /signup. Skipped to keep the public walk to 3 highest-signal pages.
- /launches/new (publish)·Did not click Publish launch. Creating a real public launch entry under the founder's app would pollute their feed; test stops at the populated draft state.
5 visual changes
Share this run
Proof your app is not AI slop
This test was built for www.launchpact.io — 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.














