Recording of the visual regression run on frelantra.com · Frelantra — app walkthrough.

In this video· click a step to jump to it

F
Passed

Test recording

Frelantra — app walkthrough

69,825 ms · 48,964 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against frelantra.com. 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 STAMP = Date.now().toString(36);
  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); })()";

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

  // ── Scenario 1 — public home (context only) ───────────────────────────────
  stepLogger.log('Scenario 1: Frelantra home (public)');
+108 more lines claim the test to get the full code.

Checks run

Run
Visual
74.88%
Text
DOM
Network
+99 −55
Console
A11y
A
Perf
187 over
URL
66 diverged
Variables
Full report
Log in →
48,964
Diff px
1m 10s
Duration
A
Accessible
WCAG 2.2 · 91
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

We signed up for Frelantra as a photographer and drove the workspace end-to-end: onboarding, a client record, a booked project with fee and scope notes, then contracts, tasks, calendar and billing. The two-step onboarding is the strongest part of your product — picking 'Photography' quietly pre-matches the contract templates and smart fields, so the workspace is already yours before you've entered a single project. Your empty states also do real work: every one of them names the next action instead of just saying 'nothing here'.

Highlights
  • Onboarding earns its two steps
    Industry picker then plan choice, nothing else. 'Full access, no card required' on the trial card removes the usual hesitation, and you land in the workspace in under 30 seconds.
  • The project page is the hub you'd want
    After creating a project, tasks board, contracts, scope notes, client card and fees all sit on one screen. 'Share portal with client' being right there is a strong touch — the client-facing half is one click from the work itself.
  • Empty states name the next action
    'Add the people you work with once, then pick them when you start a project' beats a generic zero-state. Same on contracts: it explains that contracts come from a project rather than leaving a dead end.
Friction points
  • Client record paints a skeleton for ~2s
    Opening a client from the list shows grey placeholder rows before the record resolves — our first capture caught only skeletons. Prefetching the client on row hover, or rendering the name/avatar from the list data you already have, would make it feel instant.
  • Project create leaves you on a spinner
    After 'Create Project' the success toast fires while the page is still blank-loading on the way to the project. Routing optimistically (or holding the button in a loading state until the project page paints) would make the handoff feel deliberate.

5 visual changes

Step 21,422 px changed
Before
Before
After
After
Diff
Diff
Step 44,898 px changed
Before
Before
After
After
Diff
Diff
Step 51,329 px changed
Before
Before
After
After
Diff
Diff
Step 6170 px changed
Before
Before
After
After
Diff
Diff
Step 741,145 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.
56,767 test runs recorded · 1,011 products tested with Lastest

This test was built for frelantra.com — 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.