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

39,629 ms · 42 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 SITE = baseUrl.replace(/\/$/, '');
  const EMAIL = '[email protected]';
  const PASSWORD = '•••';
  let n = 0;
  const shot = async (slug) => {
    n += 1;
    const path = screenshotPath.replace(/\.png$/, `-${String(n).padStart(2,'0')}-${slug}.png`);
    await page.screenshot({ path, fullPage: true });
    stepLogger.log(`Screenshot ${n}: ${slug}`);
  };
  const dismissCookieBanner = async () => {
+100 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
0.04%
Text
—
DOM
✓
Network
+50 −70
Console
✓
A11y
—
Perf
50 over
URL
✓
Variables
—
Full report
Log in →
42
Diff px
40s
Duration
—
Accessible
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

Pay4SaaS is a $199 SaaS billing-infrastructure codebase (subscriptions, credits, lifetime); the marketing site is dense and well-organised (hero CTA, 4-tier monetization model showcase, code samples), and the dashboard surface behind email+password+OAuth is intentionally minimal (Subscription state + Display Name) since the product itself ships as code customers install.

Highlights
  • Strong dev-focused hero
    Hero pivots immediately from value prop to a concrete code snippet (`if (sub.status === 'past_due') ...`) and a 'When billing goes wrong' problem framing — speaks the language of the founder buying Stripe code, not the marketing-deck language a B2B SaaS would use.
  • Clean 4-mode pricing storytelling
    The 'One environment variable to switch' section makes a strong technical promise that's easy to validate — quota / unlimited / credits / lifetime as a unified abstraction is rare in indie payments libs.
  • Dashboard intentionally minimal post-auth
    Settings = Display Name + read-only Email; Billing = Free Plan + 'Get Lifetime Access' CTA. The product is the code, not the SaaS dashboard, so this is correct scope rather than a gap.
Friction points
  • Email verification blocks self-serve evaluation
    Signup → 'Confirmation email sent. Please check your inbox.' with no in-page magic-link helper or test-account option. For a $199 code-purchase product the eval barrier is higher than necessary — a one-click demo account (read-only docs unlock) would convert curious devs faster.
  • Supabase signup endpoint rate-limits aggressively at 429 'email rate limit exceeded'
    Default Supabase project config — 3 signup attempts within ~2 min from the same IP triggers a 429 with the unfriendly 'email rate limit exceeded' message, even when the emails are unique. Raise the rate-limit ceiling or surface a friendlier error ('Too many attempts — wait a minute and retry').
  • Founder email exposed in two places
    [email protected] appears as a copy-to-clipboard button in both <main> and <footer>. Lovely for indie-hacker accessibility, but doubles the surface area for scrapers — consider deduping to footer-only.

Visual change

Step 242 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,604 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.