In this video· click a step to jump to it
Test recording
multical — app walkthrough
53,753 ms · 0 pixels changed · matches baseline
We built this regression test for app.usemultical.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against app.usemultical.com. 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":1,"steps":[{"goto":"/","dismiss":true,"label":"calendars-home"},{"clickText":"Sync Rules","label":"sync-rules"},{"clickText":"Booking Pages","label":"booking-pages"},{"clickText":"Portfolio View","label":"portfolio-view"},{"clickText":"Account","label":"account"},{"at":"/","clickText":"Add Google Calendar","label":"add-calendar"},{"at":"/","clickText":"Tour","label":"product-tour"},{"at":"/","clickText":"Sync Rules","label":"sync-rules-2"}]};
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-generatedMultical is a calendar-syncing and booking tool 'for people who don't fit into one calendar'. Signup ends on a plan screen that explicitly says 'no credit card required' with a 'Skip for now, go to Dashboard' escape — a refreshingly low-friction trial. The app is a clean tab-based SPA: Calendars, Sync Rules, Booking Pages, Portfolio View and Account, with one-click 'Add Google Calendar' connection.
- No-card free trial with a real skipThe onboarding plan step says 'No credit card required' and offers 'Skip for now, go to Dashboard' — you reach the product without a payment wall.
- Clear feature tabsCalendars / Sync Rules / Booking Pages / Portfolio View map cleanly to the jobs (connect, dedupe, share availability, showcase).
- Portfolio view differentiatorA 'Portfolio View' on top of standard sync/booking is a nice differentiator versus generic calendar tools.
- Button-only navigationSections are switched by in-app buttons with no deep-link URLs, so a shared link can't point a colleague straight at, say, Booking Pages.
- Empty calendar stateBefore connecting a calendar the workspace is largely empty; a sample/connected-state preview would help first impressions.
Share this run
Proof your app is not AI slop
This test was built for app.usemultical.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.