In this video· click a step to jump to it
Test recording
freshlien — app walkthrough
46,106 ms · 0 pixels changed · matches baseline
We built this regression test for www.freshlien.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.freshlien.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const CFG = {"appEntry":"/dashboard/foreclosures","publicMaxNav":2,"fullPage":true,"steps":[{"goto":"/dashboard/foreclosures","waitMs":3500,"label":"foreclosures-search-map"},{"fill":[{"sel":"input[type=search]","value":"Smith"}],"waitMs":2000,"label":"search-filtered"},{"clickText":"Map","waitMs":2500,"label":"map-view"},{"goto":"/dashboard/saved","label":"saved-properties"},{"goto":"/dashboard/alerts","label":"county-alerts"},{"goto":"/analytics","label":"analytics"},{"goto":"/dashboard/billing","label":"billing-plan"},{"goto":"/settings","label":"account-settings"},{"goto":"/dashboard/foreclosures","clickText":"Open FreshLien assistant","label":"ai-assistant"}]};
const shot = function(i, s){ return screenshotPath.replace('.png', '-' + i + '-' + s + '.png'); };
page.setDefaultTimeout(6000);
// single combined noise-abort route (1 action instead of ~10)
await page.route(function(u){ return /sentry|segment\.com|googletagmanager|google-analytics|hotjar|posthog|connect\.facebook|cdn-cgi\/scripts/.test(u.toString()); }, function(r){ r.abort().catch(function(){}); }).catch(function(){});
let n = 1;
const FP = CFG.fullPage !== false;
const GOTO = 11000;
const wait = function(ms){ return page.waitForTimeout(ms||500); };
const dismiss = async function(){ const d = page.getByRole('button', { name: /skip|dismiss|maybe later|not now|got it|close|no thanks|continue|get started/i }).first(); if (await d.isVisible().catch(function(){return false;})) { await d.click({ timeout:2000 }).catch(function(){}); await wait(400); } };
const clickByText = function(src){ return page.evaluate(function(s){Checks run
Notes from the demo run
AI-generatedFreshLien gives real-estate investors same-day distressed-property data 'before the crowd.' After a Supabase email-confirm, the app opens on a clean Search & map dashboard showing 1,555 live active-foreclosure listings, with county/status/date filters, list+map toggle, CSV export, a Saved-properties workspace, a county-level Alerts system, Analytics, Billing and an in-app FreshLien AI assistant. The IA reads like a focused data tool, not a bloated CRM.
- Live data, front and centerThe dashboard opens straight onto 1,555 live foreclosure listings with search, map and county/status filters — the product's core value (fresh distressed-property data) is legible in the first three seconds.
- County alert systemA dedicated Alerts surface lets investors subscribe to specific counties — exactly the 'tell me the moment something drops in my market' job this audience cares about.
- In-app AI assistantA FreshLien assistant button is built right into the dashboard for querying the data conversationally — a thoughtful add over a static table.
- Three data types still 'Soon'Pre-foreclosures, Probate and Tax-delinquency are shown in the sidebar but marked 'Soon' — only Active Foreclosures is live, so a first-time visitor sees three teasers they can't use yet.
- Foreclosure list loads slowlyThe listings table shows a 'Loading foreclosures…' spinner for a couple of seconds on first paint; a skeleton/cached count would make the dashboard feel instant.
Share this run
Proof your app is not AI slop
This test was built for www.freshlien.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.