In this video· click a step to jump to it
Test recording
doctorpage — app walkthrough
59,393 ms · 0 pixels changed · matches baseline
We built this regression test for doctorpa.ge — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against doctorpa.ge. 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":"/dashboard","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/dashboard","label":"page-ready-hub","waitMs":1500},{"clickText":"Edit","label":"page-editor","waitMs":1800},{"goto":"/dashboard","dismiss":true,"clickText":"Write your bio","label":"write-bio","waitMs":1600},{"goto":"/dashboard","dismiss":true,"clickText":"Add hospitals","label":"add-hospitals","waitMs":1600},{"goto":"/dashboard","dismiss":true,"clickText":"Add training","label":"add-training","waitMs":1600},{"goto":"/dashboard","dismiss":true,"clickText":"Add why you practise","label":"why-i-practise","waitMs":1600},{"goto":"/preview/viktormensah","label":"public-page-preview","waitMs":1500},{"goto":"/settings","label":"settings","waitMs":1500}]};
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-generatedDoctorPage nails its core promise — a doctor types their name and instantly sees doctorpa.ge/<name> reserved with a live countdown, then lands on a dashboard that gamifies profile-building with a completion percentage and per-section point values (+9% hospitals, +8% bio, +7% training). The whole 'claim to live page' loop is genuinely under two minutes.
- Instant gratification claim flowEntering a name immediately renders 'doctorpa.ge/viktormensah is yours' with a 15-min reservation countdown and a live preview card. Strong dopamine hit before any commitment.
- Gamified completion checklistThe dashboard frames every empty section as a percentage gain (Add hospitals +9%, Write your bio +8%), turning profile-building into a progress bar rather than a chore.
- Patient-first CTAsWhatsApp-the-doctor and the public page link are surfaced prominently — the product clearly designs around what patients searching the doctor's name actually need.
- Public page lives at /preview/<slug>, not /<slug>Hitting doctorpa.ge/viktormensah directly shows a 404 ('That page doesn't exist yet') while the page is still a draft. A doctor sharing their URL before publishing would send patients to a dead page.
- Dashboard sections aren't deep-linkableEdit / Write bio / Add hospitals all open inline rather than at addressable routes, so you can't bookmark or share a specific editor section.
- /viktormensah·Public page 404s while in draft; previewed via /preview/viktormensah instead
Share this run
Proof your app is not AI slop
This test was built for doctorpa.ge — 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.