Recording of the visual regression run on My Profit Ledger — app walkthrough · My Profit Ledger — app walkthrough.

In this video· click a step to jump to it

?
Passed

Test recording

My Profit Ledger — app walkthrough

91,805 ms · 0 pixels changed · matches baseline

We built this regression test for My Profit Ledger — app walkthrough — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against My Profit Ledger — app walkthrough. Claim it into your own workspace and re-run it on every deploy — free.

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const shot = (i, slug) => screenshotPath.replace('.png', '-' + i + '-' + 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); })()";
  const UA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36";
  await page.context().setExtraHTTPHeaders({ 'User-Agent': UA });
  for (const pattern of ['**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/*.posthog.com/**', '**/googletagmanager.com/**', '**/google-analytics.com/**', '**/*.clarity.ms/**', '**/doubleclick.net/**']) {
    await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
  }
  const dismiss = async function () {
    for (const rx of [/^accept$/i, /accept all/i, /got it/i, /allow all/i, /^ok$/i, /skip for now/i, /maybe later/i, /^later$/i, /not now/i, /^close$/i, /^dismiss$/i]) {
      await page.getByRole('button', { name: rx }).first().click({ timeout: 1200 }).catch(function () {});
    }
+109 more lines claim the test to get the full code.

Checks run

Run
Visual
Text
DOM
Network
+132 −154
Console
A11y
A
Perf
77 drift
URL
Variables
Full report
Log in →
0
Diff px
1m 32s
Duration
A
Accessible
WCAG 2.2 · 93
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

We signed up for My Profit Ledger with a fresh account, confirmed the email, walked your 3-step setup wizard and then drove the signed-in app end to end - Profiles, Accounts, Categories, Transactions, Reports, Receipts, Mileage and Settings. The sidebar split between 'Setup (1/3)' and 'Daily Use' is the strongest thing here: a brand-new account immediately knows which three things it owes you before the product is useful, and which seven it will live in afterwards. Your empty states carry real examples rather than shrugs.

Highlights
  • Setup vs Daily Use split
    Grouping the sidebar into 'Setup (1/3)' with amber dots and 'Daily Use' below means a new account never has to guess what's blocking it. The dots vanish as you complete each one - progress you can see without a progress bar.
  • Empty states name real things
    The Accounts zero-state says 'for example "Chase Checking", "Business Credit Card", or "Cash"'. That is three concrete nouns instead of 'no data yet', and it removes the pause where a freelancer wonders what an 'account' means here.
  • Trial with no card
    30-day full access with no credit card, stated on the signup form and again on the dashboard. For the freelancer/landlord audience that is the difference between evaluating tonight and bookmarking for later.
Friction points
  • /dashboard 404s for signed-in users
    The app lives at /app, but /dashboard returns your stark '404 Oops! Page not found' rather than redirecting. Anyone who bookmarks or guesses the conventional URL hits a dead end while logged in - a one-line redirect from /dashboard to /app fixes it.
  • Confirmation link lands with no confirmation
    The confirm link resolves through email.auth.lovable.cloud to your marketing home with no 'email confirmed' state, so our first sign-in afterwards still said 'Your email hasn't been confirmed yet' and we had to resend. Landing that link on /login with a success banner would remove the retry.

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.
56,447 test runs recorded · 963 products tested with Lastest

This test was built for My Profit Ledger — app walkthrough — 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.