In this video· click a step to jump to it
Test recording
Storyland — app walkthrough
68,080 ms · 0 pixels changed · matches baseline
We built this regression test for mystoryland.ai — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against mystoryland.ai. 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' });
const settleHydrate = async function () {
await page.waitForLoadState('networkidle').catch(function () {});
await page.locator('h1, h2, main, header').first().waitFor({ state: 'visible', timeout: 7000 }).catch(function () {});
await page.waitForTimeout(500);
};
Checks run
Notes from the demo run
AI-generatedWe drove Storyland signed in: your personalised home (it greets you by name and offers the book-search discovery flow with mood chips), the curated 'Where stories take you' journeys, and the Books-set-in-Paris page mapping six novels to real, verified places. The 'grounded, never invented' promise really shows, every book-to-place is marked verified via Google Books.
- Grounded, verified contentEvery book-to-place mapping is stamped 'Verified, grounded via Google Books', a strong trust signal that sets you apart from hallucinated AI-travel content.
- Personalised, moody discoveryThe home greets the reader by name ('Late tonight, Lastest') and lets you filter journeys by mood (Cozy, Atmospheric, Slow-burn), it feels editorial, not algorithmic.
- Discover button silently disabledOn the book-search, the Discover button stays disabled until a title is chosen from the autocomplete; when the dropdown shows no match after typing there is no hint that a selection is required, so it reads as a dead button. A short helper line would fix it.
- The trip itself is waitlist-gatedThe reading lists are live, but the mapped itinerary ('Plan a trip around this book' / 'Get this reading + travel list') sits behind a waitlist email capture, worth making sure that conversion step is obvious since it's the payoff.
Share this run
Proof your app is not AI slop
This test was built for mystoryland.ai — 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.