Recording of the visual regression run on pay4saas.com · Pay4SaaS — app walkthrough.

In this video· click a step to jump to it

P
Passed ✓

Test recording

Pay4SaaS — app walkthrough

28,845 ms · 7,806 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against pay4saas.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 settle = () => page.waitForLoadState('networkidle').catch(function () {});
  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); })()";

  stepLogger.log('Scenario 1: Homepage');
  await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
  await page.evaluate(SCROLL_THROUGH).catch(function () {});
  await settle();
  await page.screenshot({ path: shot(1, 'home'), fullPage: true });

  let n = 2;
+86 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
1.46%
Text
—
DOM
✓
Network
+207 −162
Console
✓
A11y
Review
Perf
27 over
URL
✓
Variables
—
Full report
Log in →
7,806
Diff px
29s
Duration
Review
Accessible
WCAG 2.2
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

Pay4SaaS is a Next.js billing-infrastructure boilerplate sold as a one-time-purchase codebase ($299 -> $199, GitHub org invite on payment) rather than an operating end-user SaaS. The buyer-facing account area (reached via Google OAuth through Supabase) is intentionally minimal - just profile settings and a plan/billing status page - since the real product is the source code the buyer receives, not a hosted dashboard.

Highlights
  • Working EN/CN dual-locale switch
    The language toggle genuinely re-renders nav labels and routes (Pricing/Docs/Blog -> 定价/文档/博客, /docs -> /cn/docs) rather than just swapping a flag icon - a real feature for the Chinese buyer segment the founder explicitly targets (WeChat support mentioned in pricing).
  • Instant profile save feedback
    Editing the display name and saving shows a 'name updated successfully' toast and immediately reflects the new name in the header - small polish that most boilerplates skip.
  • Clean Google OAuth, no device-verify gate
    Google sign-in completed on the first attempt with no 'verify it's you' challenge.
Friction points
  • Authenticated area doesn't reflect the product being sold
    Because Pay4SaaS itself is a codebase (not a live SaaS), the buyer account only has Profile and Billing pages - a visitor who signs in expecting to see the credits/subscription/webhook features described on the landing page won't find them in their own account, only in the marketing screenshots and demo video.

Visual change

Step 17,806 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,355 test runs recorded · 1,174 products tested with Lastest

This test was built for pay4saas.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.