In this video· click a step to jump to it
Test recording
linguoai — app walkthrough
56,837 ms · 537 pixels changed
We built this regression test for linguoai.app — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against linguoai.app. 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","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/dashboard","dismiss":true,"waitMs":1800,"label":"dashboard"},{"goto":"/dashboard/websites","waitMs":1800,"label":"websites"},{"fill":[{"sel":"input[placeholder=\"Demo Store\"]","value":"Lastest Demo Store"},{"sel":"input[placeholder*=\"example.com\" i]","value":"https://lastest.cloud"}],"waitMs":1300,"label":"add-website-filled"},{"goto":"/dashboard/widget","waitMs":1700,"label":"widget-customize"},{"goto":"/dashboard/knowledge","waitMs":1500,"label":"knowledge-base"},{"goto":"/dashboard/leads","waitMs":1500,"label":"leads"},{"goto":"/dashboard/analytics","waitMs":1500,"label":"analytics"},{"goto":"/dashboard/billing","waitMs":1500,"label":"billing"},{"goto":"/dashboard/settings","waitMs":1500,"label":"settings"},{"goto":"/dashboard/support","waitMs":1500,"label":"support"}]};
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-generatedLinguo AI turns any website into an embeddable AI assistant — answer visitor questions, capture leads and track conversations with a no-code widget. After an email-verify, the dashboard is a full SaaS console: Websites (add a site / create a client / crawl), Widget (customise colour, greeting, logo, bubble icon), Knowledge (manual KB + Q&A), Leads, Analytics, Billing, Support and Settings. The IA maps cleanly to the connect-a-site → train-it → embed → watch-the-leads workflow.
- End-to-end chatbot IAWebsites / Widget / Knowledge / Leads / Analytics covers the entire lifecycle of deploying a site assistant — add a site, customise the widget, feed it knowledge, then read the leads it captures.
- Real widget customisationThe Widget page exposes brand colour, first-message copy, logo and bubble-icon URLs with a live "Powered by Linguo AI" toggle — concrete, on-brand control rather than a generic embed snippet.
- Manual knowledge + crawlKnowledge can be seeded both by crawling the website and by adding manual facts and Q&A pairs, which is the pragmatic path to a useful assistant on day one.
- Email-verify gate before loginAccount activation requires clicking a verification link before the dashboard is reachable — an inbox hop on the way to first value.
- Session lives in localStorageThe auth token is kept in localStorage (no httpOnly cookie); it works and replays fine, but a token in JS-readable storage is worth hardening for a lead-capturing product.
- Empty first-run stateA new account has no website yet, so Widget/Knowledge/Leads all open on "select a website" empty states; a sample site would showcase the product on first paint.
Visual change
Share this run
Proof your app is not AI slop
This test was built for linguoai.app — 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.


