In this video· click a step to jump to it
Test recording
eazyply — app walkthrough
53,880 ms · 2,302 pixels changed
We built this regression test for passport.eazyply.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against passport.eazyply.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":"/profile","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/onboarding/goals","label":"career-goals","waitMs":1500},{"check":["input[name=\"career_goals[]\"]"],"fill":[{"sel":"input[name=desired_role]","value":"Senior Software Engineer"},{"sel":"input[name=target_country]","value":"Germany"}],"submit":"Continue","label":"goals-completed","waitMs":2500},{"goto":"/onboarding/about","label":"about-you","waitMs":1500},{"goto":"/profile","label":"passport-editor","waitMs":1500},{"fill":[{"sel":"input[name=headline]","value":"Senior Backend Engineer · Remote-first · Open to relocation"},{"sel":"input[name=desired_role]","value":"Staff Engineer"}],"label":"fill-passport-fields","waitMs":800},{"submit":"Save","label":"passport-saved","waitMs":2500},{"goto":"/profile/resume","label":"resume-upload","waitMs":1500},{"goto":"/profile/resume/score","label":"employability-score","waitMs":2000}]};
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-generatedEazyPly Passport asks job-seekers to build 'a passport recruiters actually read' through a five-step onboarding wizard (career goals, about-you, job types) that feeds a rich profile editor — headline, current/desired role, country, target country, remote-openness, languages and an AI resume score. It's a thoughtful, structured alternative to a flat resume.
- Onboarding captures real intentRather than just name+email, onboarding collects career goals, desired role, target country and job-type preferences up front — the kind of structured data that actually powers matching.
- AI employability scoreThe resume step leads into a /profile/resume/score surface, framing the passport as something measurable and improvable rather than a static document.
- /dashboard bounces to onboarding until fully completeDeep-linking to /dashboard (or /profile via a saved link) redirects back to /onboarding/goals until the entire wizard — including the resume step — is finished. A returning user with an incomplete profile gets sent back to step one.
- 'Let's build your profile' is an anchor, not a wizard actionOn the welcome step the primary button is a plain link to /profile/resume; it reads like a completion action but doesn't mark onboarding done, which is easy to misread.
2 visual changes
Share this run
Proof your app is not AI slop
This test was built for passport.eazyply.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.





