Recording of the visual regression run on ghostlyx.com · GhostlyX — app walkthrough.

In this video· click a step to jump to it

G
Passed ✓

Test recording

GhostlyX — app walkthrough

23,961 ms · 2,607 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const APP_ENTRY = "https://ghostlyx.com/app";
  const PUBLIC_HOME = "https://ghostlyx.com/";
  const BUSINESS = {"input_placeholders":["website","domain","url","example.com"],"value":"lastest.cloud","cta_names":["add site","add website","add","create","save"]};
  const shot = (n, sl) => screenshotPath.replace('.png', `-${n}-${sl}.png`);
  const settle = () => page.waitForLoadState('networkidle').catch(() => {});
  const hydrate = async () => { await settle(); await page.locator('h1,h2,main,[role=main],[data-testid]').first().waitFor({state:'visible',timeout:6000}).catch(()=>{}); await page.waitForTimeout(900); };
  const dismiss = async () => {
    for (const re of [/skip|dismiss|got it|maybe later|not now|close|continue|next|finish|let'?s go|get started/i]) {
      const b = page.getByRole('button', { name: re }).first();
      if (await b.isVisible().catch(()=>false)) { await b.click({timeout:1500}).catch(()=>{}); await page.waitForTimeout(600); }
    }
+76 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
1.17%
Text
—
DOM
✓
Network
+6 −6
Console
✓
A11y
—
Perf
✓
URL
✓
Variables
—
Full report
Log in →
2,607
Diff px
24s
Duration
—
Accessible
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

GhostlyX is a privacy-first, cookieless web-analytics dashboard. Email signup auto-creates a session and lands straight on the /app surface — an 'All sites / No sites yet / Add your first site' empty state with a deep left nav (Compare, Heatmaps, Traffic Map, Session Replays, Visitor Log, AI Insights).

Highlights
  • Straight into the product
    No email-verify wall: signup drops you on the authed dashboard with a clear zero-state and an obvious 'Add your first site' next step.
  • Deep feature surface, clearly gated
    The nav shows the full feature set (heatmaps, session replays, AI insights) with lock icons on paid items — honest and legible for a free user.
Friction points
  • Password rule only on submit
    The 'must contain a number' rule isn't shown until submit; a letters-only first attempt is silently rejected.
  • Debug 422 page on validation failure
    A failed register rendered a raw 'Oops! 422 Unprocessable Content' debug page instead of an inline error — worth disabling APP_DEBUG in production.

Visual change

Step 12,607 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 ghostlyx.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.