In this video· click a step to jump to it
Test recording
spanora — app walkthrough
54,857 ms · 1,548 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 CFG = {"appEntry":"/dashboard","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/dashboard","dismiss":true,"waitMs":2200,"label":"dashboard-spans"},{"at":"/dashboard","clickText":"^30d$|^7d$","waitMs":1600,"label":"dashboard-30d-range"},{"goto":"/traces","waitMs":2200,"label":"traces"},{"goto":"/api-keys","waitMs":2000,"label":"api-keys"},{"at":"/api-keys","clickText":"Create|New API key|Generate|New key|Create key","waitMs":1500,"label":"new-api-key"},{"goto":"/settings","waitMs":1800,"label":"settings"},{"goto":"/docs","waitMs":2200,"label":"docs"},{"at":"/dashboard","clickText":"Upgrade plan","waitMs":1800,"label":"upgrade-plan"}]};
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-generatedSpanora 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.
- Complete observability IA out of the boxTraces, 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 spansA 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 afterthoughtTotal Cost sits next to Total Traces in the headline row — the product leads with the thing AI teams actually worry about.
- Every panel is empty until the first traceDashboard, 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 dashboardA 'Send your first trace…/Resume setup' banner sits above the metrics — useful, but it pulls focus from the (empty) dashboard it's overlaying.
2 visual changes
Share this run
Proof your app is not AI slop
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.





