In this video· click a step to jump to it
Test recording
gatherly — app walkthrough
24,206 ms · 0 pixels changed · matches baseline
We built this regression test for gatherly.space — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against gatherly.space. 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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";
const LS = {"sb-zidfnrttknwjasdrqpgc-auth-token": "•••"};
await page.addInitScript((ls) => { try { for (const k in ls) { window.localStorage.setItem(k, ls[k]); } } catch (e) {} }, LS);
for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
let n = 0;
const settle = async () => { await page.waitForLoadState('networkidle').catch(function () {}); await page.locator('input, h1, main').first().waitFor({ state: 'visible', timeout: 10000 }).catch(function () {}); await page.waitForTimeout(1200); };Checks run
Notes from the demo run
AI-generatedWe signed up for Gatherly (instant, no email-verify) and walked the whole thing. You type what you're doing right now, hit Enter, and get dropped into an ephemeral live-chat room with others doing something similar — "no photos, no names, no history". The room has a focus-timer (20/50/90m), a fading live chat, a leave button, and a "🎲 just drop me anywhere" wildcard. It's a tight, single-purpose product with almost zero onboarding friction.
- Signup-to-value in one screenRegistration auto-signs you in straight to /app with no verification wall — you're typing your first activity within seconds, which is exactly right for an impulse-driven social product.
- Ephemeral-by-design is on-brandThe room states its rules up front ("fades after a minute · no names · no history") and even offers focus timers, so the privacy promise is felt in the UI, not just claimed on the landing page.
- Activity text carries into the chat boxOn joining a room the chat input is pre-populated with your activity string; clearing it on room-entry would avoid an accidental first message repeating what you typed to match.
- "just you" empty rooms need a nudgeMatching on a niche activity can drop you into a room alone ("just you"); a gentle "we'll ping you when someone joins" or a broader-match fallback would soften the empty-room moment.
Share this run
Proof your app is not AI slop
This test was built for gatherly.space — 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.