Recording of the visual regression run on www.upplaunch.com · UpLaunch — app walkthrough.

In this video· click a step to jump to it

W
Passed ✓

Test recording

UpLaunch — app walkthrough

74,730 ms · 0 pixels changed · matches baseline

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

Take this test with you

This is a real Playwright test, recorded against www.upplaunch.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, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
  const SCROLL_THROUGH = "(async () => { const ease = t => 1 - Math.pow(1 - t, 3); const max = Math.max(0, document.body.scrollHeight - window.innerHeight); if (max < 40) return; const anim = (a, b, ms) => new Promise(res => { const t0 = performance.now(); const step = now => { const p = Math.min(1, (now - t0) / ms); window.scrollTo(0, a + (b - a) * ease(p)); p < 1 ? requestAnimationFrame(step) : res(); }; requestAnimationFrame(step); }); await anim(0, max, 1300); await new Promise(r => setTimeout(r, 300)); await anim(max, 0, 700); })()";

  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('**/*sentry*/**', function (r) { r.abort(); }).catch(function () {});

  // ── Public phase: the weekly launch board ────────────────────────────────
  stepLogger.log('Public: home');
  await page.goto(baseUrl + '/', { waitUntil: 'domcontentloaded' });
  await page.waitForLoadState('networkidle', { timeout: 4000 }).catch(function () {});
+115 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
✓
Text
—
DOM
✓
Network
+42 −28
Console
✓
A11y
A
Perf
420 over
URL
✓
Variables
—
Full report
Log in →
0
Diff px
1m 15s
Duration
A
Accessible
WCAG 2.2 · 95
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

We signed into UpLaunch with Google and drove the whole submit-a-launch flow end to end: the Monday board, the empty Your launches dashboard, then the full submission form - Basics, markdown description with the Preview toggle, topic tagging, and all three launch tiers. The form is the product, and it holds up: every field is labelled, the tier cards restate what you get instead of linking away, and the free tier is the default rather than a hidden option.

Highlights
  • Google-only sign-in is the right call here
    One button, no password, and we were on /dashboard in about four seconds. For a weekly launch board where people submit once and leave, this removes the whole password step.
  • Scarcity copy sits where the decision is made
    'Launching on the board for Sep 21 - Sep 27. 13 free slots left this week.' appears at the top of /submit and again above the tier picker. That is the strongest nudge on the page and you repeated it in exactly the right two places.
  • The tier picker explains itself
    Each of Standard / Premium / Top Spot lists its own benefits inline, and switching to Premium flips the CTA from 'Launch for free' to 'Continue to payment'. The state change makes the commitment obvious before anyone clicks.
  • Markdown editor has a real Preview
    The Write/Preview toggle renders the description as it will appear on the product page - our bullet list came through correctly. Most indie directories ship a bare textarea.
Friction points
  • Empty dashboard is a dead end for returning users
    /dashboard shows 'No launches yet' plus one CTA. Since the board resets every Monday, a returning founder sees the same empty state with no hint of when their next free slot opens. Showing 'Next board opens Monday Sep 28 - 13 free slots' on that card would give the page a reason to be revisited.
  • Logo and screenshots are optional but weighted
    The Media section says launches with a logo and screenshots get noticeably more votes, yet both are marked optional and sit below the fold. Moving the logo upload next to the product-name field - or auto-pulling the favicon at the moment the URL is typed, which you already do on submit - would lift the average listing quality.
Couldn't reach
  • /submit (final POST)·We filled the whole launch form but deliberately did not press Launch - we were not going to publish a real listing to your board as part of a test.

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,226 test runs recorded · 1,151 products tested with Lastest

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