In this video· click a step to jump to it
Test recording
CreatorLock — app walkthrough
78,437 ms · 36 pixels changed
We built this regression test for www.creatorlock.co — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.creatorlock.co. 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, s) => screenshotPath.replace('.png', '-' + n + '-' + s + '.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, 1100); await new Promise(r => setTimeout(r, 280)); await anim(max, 0, 650); })()";
await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36' });
for (const pattern of ['**/cdn-cgi/scripts/**', '**/sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/*.posthog.com/**', '**/google-analytics.com/**', '**/googletagmanager.com/**', '**/fundingchoicesmessages.google.com/**', '**/pagead2.googlesyndication.com/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
const go = async function (path, n, slug, anchor) {
await page.goto(baseUrl + path, { waitUntil: 'domcontentloaded' });
await page.getByText(anchor, { exact: false }).first().waitFor({ state: 'visible', timeout: 22000 }).catch(function () {});
await page.waitForTimeout(2800);Checks run
Notes from the demo run
AI-generatedWe created a CreatorLock account, verified the email, picked the Creator path, claimed a store URL and then drove the whole creator studio signed in: dashboard, products, the new-product composer filled end to end, payouts, affiliates, coupons, buyers, settings, and both marketplace surfaces (Discover and Library). For a product that launched five days ago the studio is unusually complete - affiliates and coupons are already there, which most creator storefronts add a year in.
- Onboarding ends with a store, not a formCreator-or-Buyer, display name, claim your URL, Launch my store. Three screens and you land on a dashboard that already knows what it is for.
- Affiliates and coupons on day oneRevenue-share partners and discount codes are first-class nav items, not a roadmap promise. That is a real reason for a creator to pick you over a generic checkout link.
- Naira-native, and it showsRevenue, pending payout and pricing are all in naira with no currency-switcher friction. The product clearly knows who it is for.
- Buyer side ships with the seller sideDiscover and Library sit in the same shell as the studio, so a creator can see the storefront their buyers get without logging out.
- The 'Save as draft' button enforces a full productSaving a draft still requires at least one digital file - we hit 'Add at least one digital file' three times before a draft would save. If draft means 'not finished yet', letting it save without the upload would stop people losing a half-written listing.
- Upload errors surface at the top, away from the fieldAttaching a PDF to the thumbnail slot reported 'File type application/pdf is not allowed for thumbnails' as a banner above the form only after clicking Save, not next to the thumbnail control where the mistake was made.
Visual change
Share this run
Proof your app is not AI slop
This test was built for www.creatorlock.co — 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.


