In this video· click a step to jump to it
Test recording
Local Radars — app walkthrough
55,046 ms · 0 pixels changed · matches baseline
We built this regression test for localradars.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against localradars.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 () {});
// ── 1. Public landing (context) ───────────────────────────────────────────
stepLogger.log('Scenario 1: Local Radars landing page');
await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
await page.waitForLoadState('networkidle', { timeout: 2500 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedLocal Radars puts you straight into a working workspace - signup returns a session immediately, no verification wall, and the Overview page opens with a three-step 'Get started' card and 49 free credits already allocated. We walked the whole authenticated surface: the new-report wizard, tracked businesses, the add-business form, reports history, account settings and both billing cadences.
- Signup to working workspace in one stepNo email verification gate, no onboarding wizard - Create account lands directly on /app with credits allocated. That is the single biggest conversion advantage you have over the rest of this category.
- Empty states that tell you the next action'No reports yet', 'No saved businesses' each pair with the exact button that fixes them. The Overview 'Get started' card numbers the three steps and puts Add business / Run free report inline.
- The free tier is specific, not vague'Your free plan includes one 7x7 report. See where you rank across 49 points around the listing.' A visitor knows exactly what they get before signing up.
- The new-report wizard stalls at step 1 without a resolved Google listingTyping a business name and keyword into /app/new/ leaves Continue inert - the step only advances once a listing is picked from the Google lookup. There is no inline hint saying the name field is a search, so it reads as a broken button rather than a required selection.
- 13 console errors on every authenticated page loadEvery /app route emits them on load. They do not break the UI, but they will mask a real error the day one appears, and they are the first thing an evaluator with devtools open sees.
Share this run
Proof your app is not AI slop
This test was built for localradars.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.