In this video· click a step to jump to it
Test recording
Apsurn — app walkthrough
70,976 ms · 229 pixels changed
We built this regression test for apsurn.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against apsurn.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const shot = function (n, slug) { return 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*/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/cdn.segment.com/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/*datafa.st*/**', function (r) { r.abort(); }).catch(function () {});
// ── Scenario 1: public landing (context frame) ─────────────────────────────
stepLogger.log('Scenario 1: Apsurn landing page');Checks run
Notes from the demo run
AI-generatedWe signed up to apsurn with an email and password, pasted a domain into your setup step, and watched the ICP engine read the site and draft a blueprint, five campaign angles and their pain statements without us typing another word. That is the strongest part of your onboarding: the visitor gets a populated workspace instead of an empty one, and the campaign copy was specific enough to be recognisably about the site we gave you. Copilot, Prospects and Market Insights all render cleanly behind the same session.
- Setup produces real output, not a checklistOne domain in, and step 1-5 delivered a company blueprint with personas (Developer, QA Engineer, Engineering Manager) plus five costed campaign angles. Most AI-SDR tools show an empty CRM at this point.
- Campaign copy references the actual product"Upgrade from Pixel-Diffing" and "Accelerate Release Confidence" both cite specifics pulled off the site. That is the moment a visitor decides the tool is real.
- Settings panel is honest about billing"No free plan - AI and sending need an active subscription or $1 / 7-day trial" sits in plain language next to the credit top-ups. Clearer than most pricing pages.
- New accounts land on 0 creditsSetup finishes with a fully drafted workspace, then Prospects and Copilot both need credits the account does not have yet. Seeding even 20 trial credits would let the first session end on a found prospect instead of a paywall.
- Blueprint panel eats the left columnThe company blueprint is open by default and pushes the campaign list below the fold on a 1280px viewport. Defaulting it collapsed after the first visit would put campaigns in front immediately.
- /dashboard/prospects (Find prospects)·Costs credits the demo account does not have
- Send all now·Outbound send - never triggered on a customer account
3 visual changes
Share this run
Proof your app is not AI slop
This test was built for apsurn.com — 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.








