Recording of the visual regression run on bonvoyagecompass.com · Bon Voyage Compass — app walkthrough.

In this video· click a step to jump to it

B
Passed

Test recording

Bon Voyage Compass — app walkthrough

117,397 ms · 17,749 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const PIN = '4821';
  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 () {});
+103 more lines claim the test to get the full code.

Checks run

Run
Visual
0.79%
Text
DOM
Network
+22 −22
Console
A11y
A
Perf
77 over
URL
Variables
Full report
Log in →
17,749
Diff px
1m 57s
Duration
A
Accessible
WCAG 2.2 · 100
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

We created a My Passport account, unlocked it with the four-digit PIN, and walked the whole private side: My Story, Travel DNA, Travel Style, My Plans, Review & Privacy, Journey Snapshot and the Journey Builder. The privacy posture is the most distinctive thing about this product and you have committed to it properly, every passport page carries 'Private by default' and 'Autosave is on', and the Review step spells out that nothing is shared unless the traveller marks it shareable. The PIN as a second lock on top of the account password is an unusual choice that fits the passport metaphor.

Highlights
  • Privacy is stated on every screen, not buried in a policy
    'Private by default' and 'Autosave is on' sit in the header of each passport step, and the Plans page says permissions 'will each require a separate opt-in. Nothing is enabled automatically.' That is a real differentiator for a travel profile product.
  • The four-digit PIN is a genuine second lock
    Signing in is not enough, /my-passport stays locked until the PIN is entered, and it re-locks every visit. Nice fit with the passport framing and a real privacy feature rather than a decorative one.
  • The passport is a resumable journal, not a form
    Progress shows as a percentage across six numbered sections with 'Finish Later' on each step, so a half-finished profile is a first-class state instead of an abandoned form.
Friction points
  • The global header shows 'Sign In' even when you are signed in
    On /journey-snapshot, /destinations and the other marketing-shell pages the top-right still reads 'Sign In' while the session is live, the passport page itself correctly says 'Welcome, Lastest QA'. A signed-in traveller browsing destinations looks logged out to themselves, which is the moment they are most likely to re-register or bounce.
  • The Travel DNA prompt covers the passport right after unlock
    Entering the PIN drops you onto the passport but a full-width 'Your Travel DNA' panel sits over the six journey sections, so the first thing a new traveller sees after unlocking is a second ask rather than the thing they just unlocked. 'I'll do this later' is there, but the dashboard underneath is what earns the unlock.
Couldn't reach
  • /book·Booking flow, deliberately not exercised to avoid touching a real reservation path

4 visual changes

Step 138 px changed
Before
Before
After
After
Diff
Diff
Step 47,605 px changed
Before
Before
After
After
Diff
Diff
Step 69,253 px changed
Before
Before
After
After
Diff
Diff
Step 8853 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 bonvoyagecompass.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.