In this video· click a step to jump to it
Test recording
Labto AI — app walkthrough
63,280 ms · 0 pixels changed · matches baseline
We built this regression test for labtoai.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against labtoai.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 + '-' + s + '.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, 1200); 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/154.0.0.0 Safari/537.36' });
const noise = ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**'];
for (const pattern of noise) {
await page.route(pattern, function (r) { return r.abort(); }).catch(function () {});
}
// ── 1. Post-login landing: the merchant console ──
await page.goto(baseUrl + '/dashboard', { waitUntil: 'domcontentloaded' });Checks run
Notes from the demo run
AI-generatedWe registered a merchant account on Labto AI, verified the emailed code, and drove the whole console: Overview, Knowledge Base, Product Catalog, Widget Settings, API Keys, Conversations and Billing. The console is unusually calm for an AI product, one sidebar, one breadcrumb, consistent empty states, and the free tier lands you on the real thing with 1,500 credits rather than a sandbox.
- Free tier is the real consoleA new merchant lands on the actual console with 1,500 lifetime credits and every section unlocked. Nothing is greyed out pending payment, which makes the product very easy to evaluate in the first two minutes.
- Catalog ingestion has an obvious on-rampProduct Catalog leads with both 'Bulk Excel / CSV Import' and 'Add Product' side by side. For a merchant with an existing store the bulk path being first-class is the right call.
- Credits are always visibleThe AI Smart Credits balance sits on the Overview with lifetime usage and a percentage. For a usage-priced AI product, showing the meter before the bill is a trust move.
- Empty console gives no first actionOverview, Knowledge Base, Product Catalog and Conversations are all empty on a fresh account and each says a variant of 'no data'. A single 'Index your store to get started' call to action on the Overview would turn four dead ends into one path.
- The 6-digit code box rejects a pasted codeThe verification screen uses six single-character inputs. Pasting the code from the email only populated the first box until we dispatched a real paste event. Accepting a paste across all six is a small change that removes a genuine drop-off point right before activation.
Share this run
Proof your app is not AI slop
This test was built for labtoai.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.