In this video· click a step to jump to it
Test recording
FromYourFridge - app walkthrough
121,402 ms · 65,679 pixels changed
We built this regression test for fromyourfridge.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against fromyourfridge.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const SITE = baseUrl.replace(/\/+$/, '');
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, 1200); await new Promise(r => setTimeout(r, 250)); await anim(max, 0, 600); })()";
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 ['**/googletagmanager.com/**', '**/pagead2.googlesyndication.com/**', '**/googlesyndication.com/**', '**/doubleclick.net/**', '**/cdn.segment.com/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
const settle = async function (ms) {
await page.waitForLoadState('networkidle', { timeout: 2500 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe created an account, stocked the pantry with five items, and walked the whole signed-in kitchen: dashboard, pantry, grocery list, saved recipes, meal plans, profile, the recipe generator, the 7-day meal planner, the shelf-life assistant and ingredient trends. Signup is one screen and drops you straight into a dashboard that already knows what to ask for. Adding a pantry item is instant and the sidebar count updates live. The one thing we could not get to work was the button the whole product is named after.
- Signup to stocked pantry in under a minuteName, email, password, and we landed on 'Tonight's HQ' with three concrete next actions. No email verification, no tour, no plan picker. For a utility people reach for at 6pm, that is the right amount of friction.
- The pantry model is the productItem, quantity, storage location (Fridge / Freezer / Pantry / Counter), bought date and expiry, plus a 'Use soon' shelf on the dashboard. Most recipe apps ask what you feel like eating; yours asks what is about to go off.
- Empty states name the next action'Pantry is empty - add what's in the fridge so we can flag what to cook first' beats a blank pane, and the same pattern repeats on grocery list and meal plans.
- Ingredient Trends is a genuine hookAggregated, anonymised view of what other cooks have on hand. That is a content asset and a retention loop in one page, and it needs no account to be interesting.
- The Generate button on /generate does not fireWith ingredient chips selected and the button enabled, clicking Generate produced no result and, more tellingly, no network request at all. We tried a normal click, a forced click, and a direct DOM .click() in the console; the page never issued a request to any generate endpoint and never changed state. Worth checking whether the form's submit handler is attached on the client build that is live right now, because this is the single action the landing page sells.
- The Generate CTA sits below the fold at desktop heightThe button renders at roughly y=1145 on a 720px-tall viewport, so at a standard laptop window it is off-screen behind the full options panel. Even once the handler is fixed, a sticky or duplicated CTA would stop people scrolling to find it.
9 visual changes
Share this run
Proof your app is not AI slop
This test was built for fromyourfridge.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.


























