Recording of the visual regression run on www.rinse.com · rinse-demo — authed walkthrough.

In this video· click a step to jump to it

W
Passed ✓

Test recording

rinse-demo — authed walkthrough

33,362 ms · 1,026 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against www.rinse.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, sl) => screenshotPath.replace('.png', `-${n}-${sl}.png`);
  const settle = () => page.waitForLoadState('networkidle').catch(() => {});

  await page.route(/cloudflare|googletagmanager|google-analytics|posthog|sentry|fullstory|hotjar|amplitude|mixpanel|segment\.com|intercom|stripe\.com\/v3|fbevents|ketch|kustomer|swb|ttd|tiktok|hubspot|reddit/i, r => r.abort().catch(() => {}));

  // Scenario 1: authed signup wizard (we hit /sp-schedule because the wizard isn't complete)
  stepLogger.log('Scenario 1: Authed signup wizard mid-flow (step 2/3 Pickup)');
  await page.goto(baseUrl + '/customers/signup/sp-schedule/', { waitUntil: 'domcontentloaded' });
  await settle();
  await page.waitForTimeout(3000);
  await page.screenshot({ path: shot(1, 'wizard-pickup-step'), fullPage: true });
+31 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
0.01%
Text
—
DOM
✓
Network
+15 −15
Console
✓
A11y
—
Perf
70 over
URL
✓
Variables
—
Full report
Log in →
1,026
Diff px
33s
Duration
—
Accessible
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

Rinse's signup is a 3-step wizard: account (first/last/phone/email/password) → schedule (pickup window) → address (Google Maps autocomplete). Account is created at step-1 submit; rinse_authenticated_user cookie is set, kustomer_jwt is provisioned, and re-visiting /accounts/login/ correctly routes back into the in-progress wizard. Authed surface walked from a captured mid-wizard session.

Highlights
  • Phone-uniqueness pre-check
    Step 1 rejects duplicate phone numbers in real-time ('An account with this phone number already exists.') — saves the user from finishing the wizard only to be told at the end.
  • Wizard state preserved in localStorage
    signup-firstName / signup-email / signup-phoneNumber / signup-pickupDate all written to localStorage as the user types — leave-and-return resume works without losing progress.
Friction points
  • /customers/signup/ is marketing not form
    The /customers/signup/ link from the login page is a marketing landing about the Rinse service — no form. The real signup is reached via 'Sign up with email' → /customers/signup/account. One extra click visitors don't expect.
  • Address step uses Google Maps autocomplete only
    Step 3 has no plain address text inputs — only a Maps autocomplete component. Visitors with addresses Google Maps doesn't recognize cleanly (rural, new construction, suite numbers) hit friction.

Visual change

Step 41,026 px changed
Before
Before
After
After
Diff
Diff

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,604 test runs recorded · 1,174 products tested with Lastest

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