Recording of the visual regression run on couchpals.com · Couch Pals — walkthrough v2.

In this video· click a step to jump to it

C
Passed ✓

Test recording

Couch Pals — walkthrough v2

33,982 ms · 18,566 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against couchpals.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+'-'+s+'.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' }).catch(function(){});
  async function addPlayer(nm){
    const open=page.getByRole('button',{name:/^Add$/i}).first(); if(await open.isVisible().catch(function(){return false;})) await open.click().catch(function(){});
    await page.waitForTimeout(700);
    const inp=page.locator('input[placeholder="New player"]').first(); await inp.click().catch(function(){}); await inp.fill(nm).catch(function(){});
    const rf=page.getByRole('button',{name:/random face/i}).first(); if(await rf.isVisible().catch(function(){return false;})) await rf.click().catch(function(){});
    await page.waitForTimeout(400);
    const adds=page.getByRole('button',{name:/^Add$/i}); const n=await adds.count(); await adds.nth(n-1).click().catch(function(){});
    await page.waitForTimeout(900);
  }
+16 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
42.12%
Text
—
DOM
✓
Network
+60 −60
Console
✓
A11y
—
Perf
✓
URL
✓
Variables
—
Full report
Log in →
18,566
Diff px
34s
Duration
—
Accessible
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

Couch Pals is a no-login game-night session tracker. You register your regular players once (name + avatar, stored in-browser), then start sessions and use quick tools (dice/coin/random picker). Everything works anonymously, client-side.

Highlights
  • Register players once
    'Add each real player once — profile, avatar and stats stay in this browser for later sessions' is a clean local-first model, no account.
  • Zero friction
    Open app → add players → start a session, all without signup.
Friction points
  • Device-local only
    Player roster lives in one browser; recurring groups on multiple devices would need an optional sync.

Visual change

Step 618,566 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,604 test runs recorded · 1,174 products tested with Lastest

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