Recording of the visual regression run on podscan.fm · podscan — app walkthrough.

In this video· click a step to jump to it

P
Passed ✓

Test recording

podscan — app walkthrough

70,511 ms · 13,116 pixels changed

We built this regression test for podscan.fm — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against podscan.fm. Claim it into your own workspace and re-run it on every deploy — free.

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const CFG = {"appEntry":"/dashboard","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/dashboard","dismiss":true,"waitMs":2000,"label":"dashboard-overview"},{"fill":[{"sel":"input[placeholder*=\"looking for\" i]","value":"Lenny's Podcast","seq":true}],"submit":"Search","waitMs":4500,"label":"search-podcasts"},{"goto":"/dashboard/publishers","waitMs":1800,"label":"publishers"},{"goto":"/dashboard/demographics","waitMs":1800,"label":"demographics"},{"goto":"/dashboard/share-of-voice","waitMs":1800,"label":"share-of-voice"},{"goto":"/dashboard/landscape-reports","waitMs":1800,"label":"landscape-reports"},{"goto":"/dashboard/favorites","waitMs":1500,"label":"favorites"},{"goto":"/user/api-tokens","waitMs":1800,"label":"api-tokens"},{"goto":"/dashboard/api-logs","waitMs":1600,"label":"api-logs"},{"goto":"/dashboard/billing","waitMs":1800,"label":"billing"}]};
  const shot = function(i, s){ return screenshotPath.replace('.png', '-' + i + '-' + s + '.png'); };
  page.setDefaultTimeout(6000);
  // single combined noise-abort route (1 action instead of ~10)
  await page.route(function(u){ return /sentry|segment\.com|googletagmanager|google-analytics|hotjar|posthog|connect\.facebook|cdn-cgi\/scripts/.test(u.toString()); }, function(r){ r.abort().catch(function(){}); }).catch(function(){});
  let n = 1;
  const FP = CFG.fullPage !== false;
  const GOTO = 11000;
  const wait = function(ms){ return page.waitForTimeout(ms||500); };
  const dismiss = async function(){ const d = page.getByRole('button', { name: /skip|dismiss|maybe later|not now|got it|close|no thanks|continue|get started/i }).first(); if (await d.isVisible().catch(function(){return false;})) { await d.click({ timeout:2000 }).catch(function(){}); await wait(400); } };
  const clickByText = function(src){ return page.evaluate(function(s){
+55 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
0.70%
Text
—
DOM
✓
Network
+420 −420
Console
✓
A11y
B
Perf
120 over
URL
✓
Variables
—
Full report
Log in →
13,116
Diff px
1m 11s
Duration
B
Accessible
WCAG 2.2 · 85
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

Podscan is real-time podcast monitoring — get alerted the moment your brand, competitors or industry is mentioned across 4.7M+ podcasts, with a full analytics + export + API surface. After an email-verify the dashboard is a serious operator console: a natural-language search bar up top, then Podcasts / Topics / Charts / Sponsors discovery, Keyword & Sponsor Alerts, Share-of-Voice, Demographics, Landscape Reports, contact/data exports, an API token manager with usage and MCP logs, and team billing. It reads like a mature intelligence product, not an MVP.

Highlights
  • Search is the front door
    The authenticated dashboard leads with a single "whatever you're looking for…" box — the core job (find what podcasts say about you) is one keystroke away, exactly right for a monitoring tool.
  • Genuinely deep IA for an indie product
    Share of Voice, Demographics, Landscape Reports, Contact/Data Exports, an API-token manager with usage + overage + MCP logs — the breadth signals this is a real data platform, and it all rendered cleanly under baseline.
  • API-first with MCP logs already shipped
    API Tokens, API Usage & Overage and dedicated MCP Logs are first-class nav items — a strong signal to developer buyers that automation is a supported path, not an afterthought.
Friction points
  • Email-verify gate before first value
    Signup sends a verification link that must be clicked before the dashboard is reachable — an inbox hop between "sign up" and "see mentions" on a product whose pitch is real-time speed.
  • Empty-account first run
    A brand-new account has no alerts or favourites configured, so Alerts / Favorites / Reports open on empty states; a seeded example keyword would let an evaluator feel the monitoring loop before configuring it.

5 visual changes

Step 111,989 px changed
Before
Before
After
After
Diff
Diff
Step 2376 px changed
Before
Before
After
After
Diff
Diff
Step 3376 px changed
Before
Before
After
After
Diff
Diff
Step 540 px changed
Before
Before
After
After
Diff
Diff
Step 12335 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,322 test runs recorded · 1,174 products tested with Lastest

This test was built for podscan.fm — 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.