In this video· click a step to jump to it
Test recording
Webyz — app walkthrough
92,557 ms · 3,504 pixels changed
We built this regression test for app.webyz.io — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against app.webyz.io. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const APP = 'https://app.webyz.io';
const SITE = APP + '/sites/lastest.cloud';
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' });
await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/sentry-cdn.com/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/connect.facebook.net/**', function (r) { r.abort(); }).catch(function () {});
// ── Scenario 1: public marketing home (context only) ──────────────────────Checks run
Notes from the demo run
AI-generatedWe signed up for Webyz with a fresh account, confirmed the email, added a site and then drove all twelve authenticated surfaces: the websites list, the site Overview, Pages, Search, Realtime, Journeys, Goals, the install screen, API keys, Account and the add-a-website form. The shell is unusually calm for a beta analytics product: one nav row, one date control, and every report reachable in a single click. The standout is your install screen, which tells the user it will move on by itself once the first pageview lands.
- Install screen does the waiting for you"Waiting for the first pageview - checking every few seconds" plus an explicit "I'll do this later" escape. Most analytics tools make the user refresh and guess; yours removes that whole moment of doubt.
- Search tab has a real empty stateThe Search report renders a single "Connect Google Search Console" card with one sentence of what it unlocks. It is the clearest empty state in the product.
- Trial with no cardPlan and billing showed "Growth trial ACTIVE - 30 days remaining" without ever asking for a card, so the whole app was explorable in one session.
- Five report tabs go quiet before the snippet is inOverview, Pages, Realtime, Journeys and Goals all render "No data for this period" with no route back to the install snippet, while Search gets a proper Connect card. Reusing that Search-style card ("Add the snippet to start collecting") on the other five would keep a new user from reading five empty screens as a broken product.
- The email round-trip is the only door inAfter Create account the app is unreachable until the confirmation link is clicked - there is no read-only or sample-data view in between. A demo workspace behind "Start free" would let an evaluator see the reports before they leave for their inbox.
- /settings/billing checkout·Stopped at the plan view - we never start a paid flow on a founder's product.
2 visual changes
Share this run
Proof your app is not AI slop
This test was built for app.webyz.io — 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.





