In this video· click a step to jump to it
Test recording
GridRankTracker — app walkthrough
75,220 ms · 0 pixels changed · matches baseline
We built this regression test for gridranktracker.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against gridranktracker.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('**/*googletagmanager*/**', function (r) { r.abort(); }).catch(function () {});
stepLogger.log('Public: home');
await page.goto(baseUrl + '/', { waitUntil: 'domcontentloaded' });
await page.waitForLoadState('networkidle', { timeout: 4000 }).catch(function () {});
await page.locator('h1, main').first().waitFor({ state: 'visible', timeout: 8000 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe registered on GridRankTracker, verified by email, added a real Google Business Profile (Blue Bottle Coffee, Ferry Building SF), tracked two keywords and ran two live grid scans - then recorded the whole signed-in loop: dashboard, project, both scan results, the grid-size and point-distance controls, the grid-point picker, account credits and services. The scan result screen is the strongest thing you have built: numbers, a colour-coded map and the cost of the next scan all in one view.
- The result screen answers the question immediatelyAvg Rank / Top 3 / Top 10 / Found sit directly above the map, and every grid pin carries its own rank number. We could read 'ranks #2 everywhere for coffee shop ferry building, nowhere for specialty coffee san francisco' in about two seconds without clicking anything.
- Credits are priced in-context, not on a pricing pageSwitching the grid from 3x3 to 13x13 live-updates '169 grid points' and 'Up to 169 credits - You have 82 remaining'. The cost of the decision is shown at the moment of the decision. Very few freemium tools do this.
- The grid-point picker is a real cost lever'Skip points in the preview to use fewer credits' plus Select all / Clear all lets a careful user cut spend before committing. It also makes the credit model feel fair rather than extractive.
- No-card free tier that actually reaches the productRegister, verify, 100 lifetime credits, and a scan running inside three minutes. Nothing was gated behind a card.
- Scan buttons attach to the existing keyword row, not the one being typedWith text in the keyword box, the nearest Scan button still opened the preview for the previously saved keyword. We had to press Add first. Disabling or dimming the row Scan buttons while the new-keyword input is dirty (or auto-adding on Scan) would remove the mis-click.
- The default 9x9 grid is a 81-credit first scanA new account has 100 credits and lands on 9x9 / 1km pre-selected, so one accidental Run Scan spends 81% of the free allowance. Defaulting a first-time account to 3x3 - and only then suggesting a wider grid - would let people try twice instead of once.
- Run Scan (third keyword)·We opened the grid-point picker and cancelled rather than spending more of the account's credits on camera.
Share this run
Proof your app is not AI slop
This test was built for gridranktracker.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.