In this video· click a step to jump to it
Test recording
Joygram — app walkthrough
78,147 ms · 24,636 pixels changed
We built this regression test for www.joygram.io — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.joygram.io. 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); })()";
const SESSION_COOKIES = [
{
"name": "_ga",
"value": "GA1.1.604343334.1789564391",
"url": "https://joygram.io/"
},
{
"name": "_ga_0Y77X4THNK",
"value": "GS2.1.s1789564391$o1$g1$t1789564985$j22$l0$h0",Checks run
Notes from the demo run
AI-generatedWe signed up to Joygram, confirmed the address, and then actually built a card: dashboard, account, template picker, then the three-step interactive-card flow with a real recipient, tone and message. For a product whose promise is 'a cute digital gift in 30 seconds', the build flow lives up to the headline - the picker is the single best screen in the product.
- The picker sells the productEighteen templates shown as live tiles (Classic Card, Love Wheel, Scrapbook, Group Voice Bouquet...) with the free ones marked. A visitor understands the range in one screen, which is exactly what a gift product needs.
- An empty state that asks for one thing'No cards yet - create your first card and make someone smile. It only takes a minute.' One CTA, no dashboard clutter. Rare and right.
- Occasion is a custom dropdown that blocks Next silentlyOn Step 2 we filled recipient, sender, relationship, tone and the message, but 'Occasion' is a custom control rather than a native select - it stayed empty and 'Next Step' stayed greyed out with nothing saying which field was missing. An inline 'Occasion is required' would unstick anyone who fills the form top-to-bottom the way we did.
5 visual changes
Share this run
Proof your app is not AI slop
This test was built for www.joygram.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.














