Recording of the visual regression run on requestharbor.com · RequestHarbor — app walkthrough.

In this video· click a step to jump to it

R
Passed

Test recording

RequestHarbor — app walkthrough

81,512 ms · 69,963 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against requestharbor.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,s)=>screenshotPath.replace('.png','-'+n+'-'+(String(s).replace(/[^a-z0-9]+/gi,'-').replace(/^-|-$/g,'').toLowerCase().slice(0,22)||'view')+'.png');
  const ORIGIN="https://requestharbor.com"; const MINPOST=9;
  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" }).catch(function(){});
  let idx=1, post=0;
  const cap=async(s,full)=>{ stepLogger.log('Scenario '+idx+': '+s); await page.screenshot({ path: shot(idx,s), fullPage: full!==false }); idx++; };
  const accept=async()=>{ await page.getByRole('button',{name:/^accept$|accept all|got it|dismiss|^close$|skip|maybe later|^ok$|not now/i}).first().click({timeout:1200}).catch(function(){}); };
  const is404=async()=>{ const b=await page.locator('body').innerText().catch(function(){return '';}); return /\b404\b|page not found|page you are looking/i.test(b); };
  // 1. Public home
  await page.goto("https://requestharbor.com",{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:6000}).catch(function(){}); await page.waitForTimeout(1600); await accept(); await cap('home');
  // 2. Authed dashboard
  await page.goto(ORIGIN+'/dashboard',{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:8000}).catch(function(){}); await page.waitForTimeout(3000); await accept(); await cap('dashboard'); post++;
+31 more lines claim the test to get the full code.

Checks run

Run
Visual
100.00%
Text
DOM
Network
+22 −33
Console
A11y
B
Perf
44 over
URL
11 diverged
Variables
Full report
Log in →
69,963
Diff px
1m 22s
Duration
B
Accessible
WCAG 2.2 · 85
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

RequestHarbor is a client-request manager built around one promise: 'one link, clear status, proof of work.' The authenticated app is a full operations suite - a Dashboard overview, Requests, Recurring requests, Clients, reusable Templates, a Calendar, and Reporting/Insights, plus Team and Billing settings. Signup drops you into a 13-day Pro trial with no card required, so an evaluator reaches every feature immediately.

Highlights
  • Full Pro trial, no card
    Registration starts a 13-day Pro trial with full access and no payment method - an evaluator lands in the complete product, not a feature-gated free tier.
  • Templates + Recurring model
    Reusable request Templates plus Recurring requests turn repetitive client asks (monthly assets, renewals) into one-click flows - the clearest expression of the 'proof of work' pitch.
  • Obvious core loop
    'New request', 'Create template' and 'Add client' sit right on the dashboard, so the primary job-to-be-done is discoverable within seconds of first login.
Friction points
  • Sidebar deep-links 404
    Several sidebar destinations (Recurring, Integrations, Insights, Team, Billing) 404 on direct URL navigation or refresh - they only resolve via in-app clicks. A page reload on those routes drops the user on a 404.
  • 12-character password + verify gate
    Signup enforces a 12-char minimum password and an email-verification step before the dashboard unlocks; reasonable for security, but two extra hurdles before first value.
Couldn't reach
  • /recurring·404 on direct navigation (client-routed only)
  • /integrations·404 on direct navigation (client-routed only)

5 visual changes

Step 26,647 px changed
Before
Before
After
After
Diff
Diff
Step 337,392 px changed
Before
Before
After
After
Diff
Diff
Step 712,628 px changed
Before
Before
After
After
Diff
Diff
Step 106,648 px changed
Before
Before
After
After
Diff
Diff
Step 116,648 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,325 test runs recorded · 941 products tested with Lastest

This test was built for requestharbor.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.