Recording of the visual regression run on linguoai.app · linguoai — app walkthrough.

In this video· click a step to jump to it

L
Passed ✓

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){
+55 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
0.52%
Text
—
DOM
✓
Network
—
Console
✓
A11y
C
Perf
✓
URL
✓
Variables
—
Full report
Log in →
537
Diff px
57s
Duration
C
Accessible
WCAG 2.2 · 70
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

Linguo 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.

Highlights
  • End-to-end chatbot IA
    Websites / 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 customisation
    The 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 + crawl
    Knowledge 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.
Friction points
  • Email-verify gate before login
    Account activation requires clicking a verification link before the dashboard is reachable — an inbox hop on the way to first value.
  • Session lives in localStorage
    The 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 state
    A 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

Step 4537 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
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,257 test runs recorded · 1,158 products tested with Lastest

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.