Recording of the visual regression run on kalendar.work · Kalendar — app walkthrough.

In this video· click a step to jump to it

K
Passed ✓

Test recording

Kalendar — app walkthrough

69,328 ms · 351 pixels changed

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

Take this test with you

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

  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', '**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**', '**/*.posthog.com/**', '**/widget.intercom.io/**']) {
    await page.route(pattern, function (r) { r.abort().catch(function () {}); }).catch(function () {});
  }

  const settle = async function () {
    await page.waitForLoadState('domcontentloaded').catch(function () {});
    await page.waitForLoadState('networkidle', { timeout: 3000 }).catch(function () {});
+66 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
0.20%
Text
—
DOM
✓
Network
—
Console
✓
A11y
B
Perf
72 over
URL
✓
Variables
—
Full report
Log in →
351
Diff px
1m 09s
Duration
B
Accessible
WCAG 2.2 · 88
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

Kalendar's signed-in dashboard is clean and Calendly-familiar: your public booking-page link sits front and center with a one-click Copy, Google/Outlook calendar connect is already wired through OAuth, and the create-event-type flow previews your booking URL slug live as you type.

Highlights
  • Booking link up front
    The dashboard leads with your shareable booking URL (kalendar.work/lastestcloud) and a Copy button, so a new user's first action, sharing their link, is one click away.
  • Calendar already connected
    The create-event-type screen shows 'Check availability from: Google Calendar / Send invite via: Google Meet' pre-wired from the sign-in OAuth. No separate integration step needed.
Friction points
  • Broad OAuth scope at sign-in
    Google sign-in requests full 'view, edit, share and permanently delete all your calendars' up front. Privacy-conscious evaluators may bounce. A read-first scope with progressive escalation when they actually create an event would lower the barrier.
  • Launch banner overlaps every header
    The 'Kalendar is live on Product Hunt' bar sits on top of every dashboard route and slightly crowds the page title. Fine for launch week, worth making dismissible after.

2 visual changes

Step 5165 px changed
Before
Before
After
After
Diff
Diff
Step 7186 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 kalendar.work — 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.