Recording of the visual regression run on sidetracked.site · SideTracked — app walkthrough.

In this video· click a step to jump to it

S
Passed ✓

Test recording

SideTracked — app walkthrough

37,015 ms · 307,181 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const AUTH_AUTOMATABLE = true;
  const CHAINED_AUTH = true;

  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); })()";

  // ─── EB Chromium bootstrap ─────────────────────────────────────────────────
  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' });
  for (const pattern of [
    '**/cdn-cgi/scripts/**/email-decode.min.js',
+198 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
100.00%
Text
—
DOM
✓
Network
+1536 −0
Console
6 new
A11y
Review
Perf
—
URL
✓
Variables
—
Full report
Log in →
307,181
Diff px
37s
Duration
Review
Accessible
WCAG 2.2
Review
Fast
Web Vitals

Notes from the demo run

AI-generated

SideTracked is a dark-themed, minimalist AI focus-coach app built on a Lovable+Supabase stack. The hero ("Focus on what matters. Reach your goal") leads straight into a live product screenshot rather than abstract marketing copy. Auth offers Google, Apple, and email+password on a single /auth page. Post-login, the core loop is tight: a 3-step wizard (name your project/identity/goal, optional milestone, AI-generated 5 daily moves) that produces genuinely specific, non-generic action items tailored to the typed inputs. The in-app surface (Calendar, Focus timer, Coaching, Profile) is small and coherent for an indie SaaS.

Highlights
  • Sharp AI move-generation
    The 'AI generates 5 concrete actions' step is not templated boilerplate — it produced highly specific, context-aware daily moves (e.g. referencing the exact project goal typed in) with time estimates per move. This is the product's core value prop and it delivers.
  • Clean auth surface
    Google, Apple, and email+password are all on one /auth page (toggle sign-in/create-account) — no separate marketing-vs-app auth split, and Google OAuth via the Lovable OAuth proxy completed without any consent-flow friction once a trusted session was used.
  • Coherent minimal app shell
    Four nav items (Home/Calendar, Focus, Coaching, Profile) cover the entire product surface — no bloat, easy to demo end-to-end in under a minute.
Friction points
  • Broken email-confirmation link (product bug)
    The signup-confirmation email's 'Verify Email' button routes through a Lovable click-tracking redirect (lnk.md.lovable-app.email) that intermittently drops the Supabase verify token's query string on the 302, landing on a bare /auth/v1 'No API key found' error page instead of completing verification. A retry sometimes works, sometimes doesn't — this is a real signup-conversion leak worth fixing (the tracker wrapper, not Supabase, is at fault).
  • First-run onboarding tour can overlay the wizard form
    On a brand-new account's first visit to /project/new, a 'THE PROBLEM' tour modal renders on top of the project-setup form. It's dismissible, but the dismiss click didn't always register cleanly in an automated context — worth double-checking the modal's focus-trap/dismiss affordance.

6 visual changes

Step 110,300 px changed
Before
Before
After
After
Diff
Diff
Step 253,044 px changed
Before
Before
After
After
Diff
Diff
Step 341,382 px changed
Before
Before
After
After
Diff
Diff
Step 448,464 px changed
Before
Before
After
After
Diff
Diff
Step 5100,947 px changed
Before
Before
After
After
Diff
Diff
Step 653,044 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.
57,311 test runs recorded · 1,174 products tested with Lastest

This test was built for sidetracked.site — 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.