In this video· click a step to jump to it
Test recording
RankBull - app walkthrough
134,898 ms · 111,421 pixels changed
We built this regression test for dashboard.rankbull.io — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against dashboard.rankbull.io. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const APP = baseUrl.replace(/\/+$/, '');
const WWW = 'https://rankbull.io';
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, 1200); await new Promise(r => setTimeout(r, 250)); await anim(max, 0, 600); })()";
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' });
for (const pattern of ['**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/googletagmanager.com/**', '**/browser.sentry-cdn.com/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
const settle = async function (ms) {Checks run
Notes from the demo run
AI-generatedWe created a free account, ran the free AI visibility scan on our own domain, completed dashboard onboarding, and walked the whole tracked-site workspace: Overview, Prompts, Citations, Competitors, Brands, Keywords, Articles, Site Health and the Agent. The free report is the strongest thing you have built. It came back in under a minute with a real grade, the verbatim buyer questions, the hosts the engines actually cited, and a clean split between AI visibility and site readiness. The dashboard shell is equally tidy. The gap is between the two: once inside, a free workspace cannot save anything, and it does not say so.
- The free report earns the signup on its ownGrade D, 34 of 100, 0 of 10 answers, with the six hosts ChatGPT and Gemini cited instead. Splitting 'AI visibility 0' from 'site readiness 85' is the insight - it tells a founder the site is fine and the presence is not.
- Signup is a single screen and auto-sessionsEmail, password, confirm, and we were in. No verification email, no code, no tour. For a tool people try on impulse after a scan, that is exactly right.
- Engine coverage is honest about the free tierChatGPT and Gemini scanned, then Perplexity, Claude, Grok and AI Overviews each explicitly marked 'Not scanned - unlocks with tracking'. Showing the locked rows beats hiding them.
- Twelve genuinely free tools with no signupAI crawler checker, llms.txt generator, schema markup, Core Web Vitals. That is a real top-of-funnel asset, not a thin content play.
- Adding a prompt fails silently on a free workspaceType a prompt, the Add prompt button is enabled, click it, and nothing happens: the dialog stays open, the list stays at zero, and no message appears. The console shows the real reason - ConvexError code WORKSPACE_LOCKED from tracking/prompts:createPrompt. Surfacing that error text as a toast, or disabling the button with an 'upgrade to track prompts' label, turns a broken-feeling app into a clear upsell. Same behaviour on Add competitor.
- Overview sends you to a dead endThe empty Overview offers 'Set up prompts' as its only call to action, which lands on the Prompts screen where saving is locked. The one action the empty state recommends is the one a free workspace cannot complete.
- checkout.dodopayments.com·Paid licence checkout - never exercised
4 visual changes
Share this run
Proof your app is not AI slop
This test was built for dashboard.rankbull.io — 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.











