In this video· click a step to jump to it
Test recording
Market4 — app workspace walkthrough
91,602 ms · 967,526 pixels changed
We built this regression test for market4.app — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against market4.app. 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 APP = '/apps/6ab9e8456be88b777e229026';
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, 1300); await new Promise(r => setTimeout(r, 300)); await anim(max, 0, 700); })()";
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*/**', function (r) { r.abort(); }).catch(function () {});
// ── 1. Public landing (context) ───────────────────────────────────────────
stepLogger.log('Scenario 1: Market4 landing page');
await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });Checks run
Notes from the demo run
AI-generatedMarket4 is the rare marketing-automation product that leads with restraint rather than reach. We created an account (instant session, no verification wall), added a real app, filled its brand kit, and walked all five workspace sections plus the setup checklist, prompt library, organizations and billing. The consistent theme across every screen is that the product tells you what it is about to spend and what it will not do without asking.
- Every expensive action names its cost before you trigger itThe index sweep says 'Up to 50 URL-Inspection calls against this property's daily allowance of 2,000 - the same allowance Inspect URL in Search Console draws on. Running it twice is two helpings, not a retry.' That paragraph does more for trust than any pricing page.
- The automation kill switch is a first-class object/settings/organizations has 'Pause automation - stops every outbound action in this organization - publishing, subscriber emails, anything that spends money. Nothing is deleted.' Most tools bury this; you made it the second thing on the page.
- The dashboard counts permissions, not vanity metrics'Publish on their own: 0 / 1' and 'Wait for approval: 1 / 1' as headline tiles. A user can see their blast radius at a glance, which is exactly the right top-level metric for an agent product.
- Signup to a working workspace in one formName, email, password, then straight into the dashboard with 'Name your first app' waiting. No verification gate, no card.
- Section tabs carry an aria-label that overrides their visible textThe PUBLISH / LISTEN / MEASURE / GET FOUND / CONFIGURE buttons render that text but expose aria-label='Listen sections', 'Get found sections' and so on. A screen-reader user hears a different label than a sighted user reads, and anything matching on the visible name finds nothing - our first pass clicked them and silently no-opped, producing three identical frames. Dropping the aria-label (the visible text is already a fine name) fixes both.
- Nothing in the app surfaces the /apps/<id>/insights, /indexing and /feedback routes until a section is expandedThey are real, fast, well-built pages, but they are two clicks deep behind an accordion that starts collapsed on PUBLISH. A new user's first impression of MEASURE and GET FOUND is a closed row.
3 visual changes
Share this run
Proof your app is not AI slop
This test was built for market4.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.








