In this video· click a step to jump to it
Test recording
RavenGate — app walkthrough
51,882 ms · 0 pixels changed · matches baseline
We built this regression test for gate.ravenlabs.studio — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against gate.ravenlabs.studio. 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, slug) => screenshotPath.replace('.png', `-${n}-${slug}.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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";
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' });
for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
// ── Public context: sign-in page ──────────────────────────────────────────
stepLogger.log('Scenario 1: Sign-in page');
await page.goto(baseUrl + '/login', { waitUntil: 'domcontentloaded' }).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe drove RavenGate end-to-end: your sign-in, the observability dashboard (spend, P50/P95 time-to-first-token and duration, cost-by-model, spend-by-application, requests-by-hour), and every console surface, API Keys, Analytics, Audit Log, Billing, Account, Team, then created a proxy API key. For a gateway that just launched, the depth of the metrics view is impressive.
- Dashboard depthSpend, P50/P95 TTFT + duration, cost-by-model, spend-by-application and requests-by-hour all sit on one screen, a genuinely strong observability story out of the gate.
- Guided empty statesEvery zero-state points at the next action ('send a request through the proxy to see data', 'Create your first key'), so a new user is never stuck.
- Signup route shows 'Welcome back'Navigating to /signup renders the same 'Welcome back / Sign in' form as /login, so first-time visitors don't get a signup-specific affordance beyond the OAuth buttons. A distinct sign-up heading would reassure new users.
- Metric cards read as dashes when emptyThe P50/P95 tiles show a bare em-dash before any traffic; a one-line 'no data yet' hint (like the charts have) would make the empty state clearer.
Share this run
Proof your app is not AI slop
This test was built for gate.ravenlabs.studio — 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.