In this video· click a step to jump to it
Test recording
MarketRank — app walkthrough
42,334 ms · 8,218 pixels changed
We built this regression test for www.marketrank.io — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.marketrank.io. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const STAMP = Date.now().toString(36);
const EMAIL = `lastestcloud+marketrank${STAMP}@gmail.com`;
const PASSWORD = `•••`;
const SITE = baseUrl || 'https://www.marketrank.io';
// Block third-party noise + abort RSC prefetch storms triggered by Next.js hover-prefetch
await page.route('**/*', (route) => {
const u = route.request().url();
if (/cloudflareinsights\.com|google-analytics\.com|googletagmanager\.com|doubleclick\.net|fullstory\.com/.test(u)) {
return route.abort();
}Checks run
Notes from the demo run
AI-generatedMarketRank's signup is a 3-step modal wizard that already collects the market-research inputs (business + search term + city + state) before the email gate — clever lead-magnet UX that captures intent even from drop-offs. The hero ('Your local-search ranking. Exposed.') is direct and the $29/mo headline-vs-$500-1500/mo agency framing is the strongest message on the page.
- Wizard captures market signal before emailStep 1 collects what the visitor wants researched BEFORE asking for email — so even if they bounce, you have a market signal. Most indie SaaS gate market info behind email; you flipped it.
- Live leaderboard hookEmbedding a real Spring-TX leaderboard with named businesses on the homepage proves the data exists. Concrete > abstract — strong conversion lever.
- Price-anchored hero'$1,500/mo agencies, yours for $29' is repeated three times across the page. The repetition is justified — it is the single sharpest argument the product makes.
- Dashboard 500 + 404 on first paintPOST /api/marketrank/claim-listing returns 500 and GET /api/marketrank/gmb-dashboard returns 404 on the first /dashboard load after signup. Console errors surface them; the user sees a 'No GMB profile linked yet' fallback. Likely intended fallback path, but the 500 from claim-listing reads as broken — worth handling that endpoint gracefully or making the call lazy.
- Authed dashboard is paywall-firstAfter signup, /dashboard is dominated by a $29/mo Stripe subscribe card. There is no preview of what the product looks like behind the paywall — a 'sample market' or grayed-out grid would lower the friction between signup and conversion.
- Stripe Link autofill iframe overlays the card bodyThe Stripe 'Autofill with Link' iframe floats over the card-details input on first load. Functional but cluttered — Stripe Elements appearance config can hide it for first-time visitors.
- /top/mortgage-lenders/spring-tx·Public leaderboard route — captured indirectly via the homepage embed instead of via /top navigation to avoid the RSC prefetch storm.
6 visual changes
Share this run
Proof your app is not AI slop
This test was built for www.marketrank.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.

















