Recording of the visual regression run on logral.app · Logral — app walkthrough.

In this video· click a step to jump to it

L
Passed

Test recording

Logral — app walkthrough

87,004 ms · 10,747 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against logral.app. 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 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, 1300); await new Promise(r => setTimeout(r, 300)); await anim(max, 0, 700); })()";

  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' });
  await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});

  // ── Public context: home ────────────────────────────────────────────────
  stepLogger.log('Scenario 1: Public home page');
  await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
  await page.waitForLoadState('networkidle', { timeout: 6000 }).catch(function () {});
  await page.locator('h1, main').first().waitFor({ state: 'visible', timeout: 8000 }).catch(function () {});
+105 more lines claim the test to get the full code.

Checks run

Run
Visual
5.82%
Text
DOM
Network
+288 −0
Console
A11y
A
Perf
36 drift
URL
132 diverged
Variables
Full report
Log in →
10,747
Diff px
1m 27s
Duration
A
Accessible
WCAG 2.2 · 100
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

We created a Logral account, added three habits, checked them in, and walked the whole authenticated surface: the habit dashboard, the 28-week consistency heatmap, the colour picker, the shareable progress card, the actions menu, the new-habit composer and the public profile at logral.app/u/lastestqa. The habit-detail modal is the best screen in the product, three stats, a 28-week grid and the day-level tooltip all in one view without feeling dense. The dark theme holds up well at full page height.

Highlights
  • The habit detail modal earns its space
    12-week consistency, current streak and last-30-days sit above a 28-week grid where every cell carries an accessible label like 'Tue, Sep 22, 2026: Completed'. That is a genuinely good accessibility detail that most habit trackers skip.
  • The shareable progress card is built in
    A #TryLogralApp card with the heatmap rendered and a Download button, one click from the habit. Growth loop and user value in the same control.
  • Public profile by default at a clean URL
    logral.app/u/<username> with a copy-link button right on the dashboard. Pairing a private tracker with a public accountability page is the right shape for this product.
Friction points
  • A second click on a completed habit silently wipes today's progress
    The check-in control toggles: click it once to complete, click it again and the aria-label flips to 'Reset today's progress' and the day is cleared, with only a small toast. We lost a completed day to a double click while exploring. A confirm, or an undo in the toast, would protect a streak someone actually cares about.
  • Edit and invite hide behind a '...' menu that did not respond on our runner
    The edit-habit and invite-habit controls sit inside the habit modal's More menu. Across three separate runs the menu opened but the invite control never registered a click, so we swapped that step for a second habit's streak card. Worth checking those buttons have a real hit area rather than an icon-only target.
Couldn't reach
  • delete habit·Destructive, deliberately never clicked

4 visual changes

Step 2255 px changed
Before
Before
After
After
Diff
Diff
Step 33,188 px changed
Before
Before
After
After
Diff
Diff
Step 45,275 px changed
Before
Before
After
After
Diff
Diff
Step 92,029 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
a11y
WCAG AA
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
56,888 test runs recorded · 1,049 products tested with Lastest

This test was built for logral.app — 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.