In this video· click a step to jump to it
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 () {});
}Checks run
Notes from the demo run
AI-generatedWe 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.
- Setup vs Daily Use splitGrouping 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 thingsThe 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 card30-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.
- /dashboard 404s for signed-in usersThe 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 confirmationThe 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
Proof your app is not AI slop
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.