In this video· click a step to jump to it
Test recording
UniUrl — app walkthrough
92,706 ms · 462,123 pixels changed
We built this regression test for uniurl.app — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against uniurl.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 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/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**']) {
await page.route(pattern, function (r) { return r.abort(); }).catch(function () {});
}
// ---------- Public context: home ----------
stepLogger.log('Public: UniUrl home');
await page.goto(baseUrl + '/', { waitUntil: 'domcontentloaded' });Checks run
Notes from the demo run
AI-generatedWe signed up for UniUrl with email and password, confirmed via the link you mail out, then drove the whole control panel as a real user: built a board, added tiles, flipped the desktop/mobile preview, opened Analytics, Links, Apps, Promote and Account, published the board and loaded the live page. The editor is the strongest part: tile type, size, background palette and share card all live on one screen with no save button to hunt for, and the header keeps a running SAVED / DRAFT state so you always know where you stand.
- Seventeen tile types, one pickerApp, Founder Bio, Project, Link, Writing, Repository, Social, Contact, Media, Video, Statement, Now, Publication, Open to, Proof, Shipped, Capture. That vocabulary is the product's real differentiator against a generic link list, and it is one click deep.
- The share card is generated, not an afterthoughtEvery tile gets its own 1200x630 card and a direct link (uniurl.app/lastestdemo/new-link) the moment it exists, with an optional override for wording and image. Most link-in-bio tools make you screenshot your own page.
- The embed badge ships three framework snippetsHTML, React/Next.js and WordPress, with light/dark/signature variants and a live preview against a chosen background. It reads like you expect people to actually install it, not just admire it.
- Editing saves as you typeTile title, description and destination all persisted without a save action, and the header flipped to SAVED on its own. We never lost an edit across ten navigations.
- An owner's own unpublished URL 404s at themBefore we published, visiting uniurl.app/lastestdemo while signed in as the owner returned the public 'That page is not on UNIURL' 404, even though the header right above it says uniurl.app/lastestdemo and the account clearly owns it. A new user who copies their handle out of the header and pastes it in a browser will conclude signup failed. Rendering a 'this board is still a draft, publish it' state for the owner instead of the stranger's 404 is a small branch with a large first-run payoff.
- Publish only exists inside PreviewThere is no Publish control on /control itself - the only path is the Preview link in the header, which opens the draft view where the button lives. The DRAFT pill in the header looks like a status label rather than the thing standing between you and a live page. Making that pill the publish affordance would close the loop where users already look.
10 visual changes
Share this run
Proof your app is not AI slop
This test was built for uniurl.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.





























