Recording of the visual regression run on spanora.ai · Spanora — app walkthrough.

In this video· click a step to jump to it

S
Passed

Test recording

Spanora — app walkthrough

67,557 ms · 1,734 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against spanora.ai. 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=new URL("https://spanora.ai/dashboard").origin; 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 all|got it|^accept$|dismiss|^close$|skip|maybe later|not now|^ok$|let me start|show me|continue/i}).first().click({timeout:1500}).catch(function(){}); await page.keyboard.press('Escape').catch(function(){}); };
  const is404=async()=>{ const b=await page.locator('body').innerText().catch(function(){return '';}); return /\b404\b|page not found|page you.{0,6}looking for|doesn.t exist|couldn.t find|lost in the/i.test(b); };
  // 1. Public home
  await page.goto("https://spanora.ai",{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:6000}).catch(function(){}); await page.waitForTimeout(1500); await accept(); await cap('home');
  // 2. Post-login dashboard (authed via replayed storage_state)
  await page.goto(APPENTRY="https://spanora.ai/dashboard",{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:8000}).catch(function(){}); await page.waitForTimeout(2600); await accept(); await page.waitForTimeout(600); await cap('dashboard'); post++;
+34 more lines claim the test to get the full code.

Checks run

Run
Visual
0.89%
Text
DOM
Network
Console
A11y
B
Perf
22 over
URL
Variables
Full report
Log in →
1,734
Diff px
1m 08s
Duration
B
Accessible
WCAG 2.2 · 85
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

Spanora is LLM/agent observability — 'see what your AI agents do, why, and what it costs.' After a passwordless sign-in it opens on a polished dark dashboard: Total Traces, Total Cost, Avg Duration, Success Rate, Input/Output Tokens, a Cost-Over-Time chart, an Outcomes (success/partial/failure) breakdown, an Agent Leaderboard by cost, Token Efficiency and Tool Reliability. Left rail: Dashboard, Traces, API Keys, Settings, Docs, on a Free plan with 1,000 spans. The IA maps cleanly to instrument → trace → watch-cost.

Highlights
  • Complete observability IA out of the box
    Traces, cost-over-time, outcome breakdown, agent leaderboard, token efficiency and tool reliability cover the whole 'is my agent working and what's it costing me' question — it reads like a serious platform, not an MVP.
  • Time-range control + 1,000 free spans
    A 1h/24h/7d/30d toggle and a clear 0/1,000 free-span meter mean an evaluator knows exactly what they can try before paying.
  • Cost is a first-class metric, not an afterthought
    Total Cost sits next to Total Traces in the headline row — the product leads with the thing AI teams actually worry about.
Friction points
  • Every panel is empty until the first trace
    Dashboard, leaderboard and charts all show 'No data for this period' on a fresh account; a sample trace would showcase the product far better on first run.
  • 'Complete your setup' competes with the dashboard
    A 'Send your first trace…/Resume setup' banner sits above the metrics — useful, but it pulls focus from the (empty) dashboard it's overlaying.

4 visual changes

Step 1100 px changed
Before
Before
After
After
Diff
Diff
Step 5724 px changed
Before
Before
After
After
Diff
Diff
Step 886 px changed
Before
Before
After
After
Diff
Diff
Step 10824 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.
56,325 test runs recorded · 941 products tested with Lastest

This test was built for spanora.ai — 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.