Recording of the visual regression run on statsy.co · Statsy — app walkthrough.

In this video· click a step to jump to it

S
Passed

Test recording

Statsy — app walkthrough

157,821 ms · 6,747 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const SITE = baseUrl + '/s/YAdU45I5ji';
  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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";

  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-cdn.com/**', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/connect.facebook.net/**', function (r) { r.abort(); }).catch(function () {});

  // ── Scenario 1: public home ───────────────────────────────────────────────
  stepLogger.log('Scenario 1: Statsy marketing home');
+130 more lines claim the test to get the full code.

Checks run

Run
Visual
13.55%
Text
DOM
Network
+56 −56
Console
A11y
A
Perf
196 over
URL
Variables
Full report
Log in →
6,747
Diff px
2m 38s
Duration
A
Accessible
WCAG 2.2 · 95
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

We signed up for Statsy with a fresh account, confirmed the email, added a site and then drove the whole workspace: the site picker, Overview, Live, the install screen with the Next.js snippet selected, Revenue, Goals, Funnels, Journeys, Replays, Heatmaps, Search & AI, Reports and API tokens. Thirteen authenticated surfaces, all reachable without a card. The thing that stands out is how much of the product is decided before the first pageview arrives - the signup flow already shows what the dashboard will look like with data in it.

Highlights
  • The onboarding shows a populated dashboard, not an empty one
    While the site is still being added, the background renders a full sample workspace - 49,470 visitors, $103.8K revenue, channels ranked by revenue with ChatGPT already in the list. An evaluator sees the product working in the first ten seconds instead of a zero state.
  • Revenue attribution is the headline, and the copy commits to it
    "Google sent 14,300 people. The newsletter sent 2,140 and made more money." That sentence does more positioning work than the feature list, and the Revenue tab actually backs it.
  • Install screen speaks to how people actually deploy
    HTML / Next.js / WordPress / Shopify / Webflow / Framer / Tag Manager tabs plus a "Copy prompt for AI" button for Claude Code and Cursor. Meeting people where they already work is a small touch most analytics tools skip.
Friction points
  • The Live view never settles, which breaks automated capture
    /live polls continuously, so a full-page capture against it times out at 15s where every other route finishes in two. Real visitors will not notice, but any screenshot service, PDF export or preview-image job pointed at Live will hang the same way. Pausing the poll when the tab is idle would fix both.
  • Empty reports do not point back to the snippet
    Goals, Funnels, Journeys, Replays and Heatmaps each render their own empty state, but only Overview carries the "Check installation" button. A new user who clicks straight into Funnels sees nothing and no next step.
Couldn't reach
  • /account/billing checkout·Stopped at the trial view - we never start a paid flow on a founder's product.

3 visual changes

Step 149 px changed
Before
Before
After
After
Diff
Diff
Step 44,996 px changed
Before
Before
After
After
Diff
Diff
Step 51,702 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
56,846 test runs recorded · 1,040 products tested with Lastest

This test was built for statsy.co — 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.