In this video· click a step to jump to it
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 });Checks run
Notes from the demo run
AI-generatedRinse'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.
- Phone-uniqueness pre-checkStep 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 localStoragesignup-firstName / signup-email / signup-phoneNumber / signup-pickupDate all written to localStorage as the user types — leave-and-return resume works without losing progress.
- /customers/signup/ is marketing not formThe /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 onlyStep 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
Share this run
Proof your app is not AI slop
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.


