In this video· click a step to jump to it
Test recording
getroundup — app walkthrough
41,590 ms · 0 pixels changed · matches baseline
We built this regression test for www.getroundup.app — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.getroundup.app. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const CFG = {"appEntry":"/","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/","dismiss":true,"label":"tasks-home"},{"clickText":"New task","label":"new-task"},{"goto":"/roster","label":"class-lists"},{"clickText":"Create class list","label":"create-class-list"},{"goto":"/menu","label":"menu"},{"at":"/menu","clickText":"Complete your profile","label":"profile-setup"},{"at":"/menu","clickText":"Invite a user","label":"invite-user"},{"at":"/menu","clickText":"How to use Roundup","label":"how-to-guide"},{"goto":"/","label":"tasks-home-final"}]};
const shot = function(i, s){ return screenshotPath.replace('.png', '-' + i + '-' + s + '.png'); };
page.setDefaultTimeout(6000);
// single combined noise-abort route (1 action instead of ~10)
await page.route(function(u){ return /sentry|segment\.com|googletagmanager|google-analytics|hotjar|posthog|connect\.facebook|cdn-cgi\/scripts/.test(u.toString()); }, function(r){ r.abort().catch(function(){}); }).catch(function(){});
let n = 1;
const FP = CFG.fullPage !== false;
const GOTO = 11000;
const wait = function(ms){ return page.waitForTimeout(ms||500); };
const dismiss = async function(){ const d = page.getByRole('button', { name: /skip|dismiss|maybe later|not now|got it|close|no thanks|continue|get started/i }).first(); if (await d.isVisible().catch(function(){return false;})) { await d.click({ timeout:2000 }).catch(function(){}); await wait(400); } };
const clickByText = function(src){ return page.evaluate(function(s){Checks run
Notes from the demo run
AI-generatedRoundup is a lightweight workspace for teachers: a Tasks board, a Roster of class lists for managing students, and a Menu with profile/invite/help. After a Supabase email-confirm the app opens on a friendly Tasks home with a 'Watch tutorial / Skip for now' onboarding nudge, and the Roster and Menu sections each carry clear empty-state CTAs ('Create your first class list', 'Complete your profile setup').
- Focused three-part IATasks / Roster / Menu maps cleanly to what a teacher actually does — track to-dos, manage class lists, configure the account — without diluting into a generic productivity suite.
- Guided first runA first-run tutorial plus a 'Complete your profile setup' nudge means a brand-new teacher never lands on a blank, directionless screen.
- Built-in invite + helpInvite-a-user and a How-to-use guide are right in the Menu, lowering the barrier for a teacher to bring a colleague on board.
- Empty new-account stateA fresh account has zero tasks and zero class lists; a sample class list or task would let an evaluator feel the product working before they create anything.
- Profile-setup nudge persistsThe 'Complete your profile setup — add your name and level' banner stays until completed; pre-filling from signup would remove a step.
Share this run
Proof your app is not AI slop
This test was built for www.getroundup.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.