In this video· click a step to jump to it
Test recording
SatQuest — app walkthrough
67,318 ms · 232,525 pixels changed
We built this regression test for app.satquests.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against app.satquests.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":0,"fullPage":true,"steps":[{"goto":"/","dismiss":true,"waitMs":3000,"label":"welcome-back"},{"clickText":"CONTINUE QUEST","waitMs":3000,"label":"quest-map"},{"clickText":"WALLET","waitMs":2500,"label":"lightning-wallet"},{"clickText":"RANKS","waitMs":2500,"label":"global-rankings"},{"clickText":"YOU","waitMs":2500,"label":"player-profile"},{"clickText":"Edit avatar","waitMs":2500,"label":"edit-character-avatar"},{"clickText":"QUEST","waitMs":2200,"label":"quest-map-journey"},{"clickText":"WALLET","waitMs":2000,"label":"sats-to-earn"}]};
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-generatedSatQuest turns learning Bitcoin into a Duolingo-style quest map: pick a handle and a character (no email, no password, no captcha — a device-keyed local-first account), then travel a 3D map of 'vaults', each a lesson worth points that convert 1:1 to real Lightning sats. The shell has Quest / Wallet / Ranks / You tabs, a global leaderboard, and a 12-word recovery-phrase wallet backup.
- Frictionless gamified signupHandle + character only — the cleanest onboarding in this batch. A learner is on the quest map in seconds with zero personal data collected.
- Real-sats incentivePoints map 1:1 to mainnet Lightning sats (167 total to earn shown up front), and the wallet/recovery-phrase model makes the reward feel real rather than a vanity score.
- Social proof via leaderboardA live global ranking (59 players, top finishers by levels cleared) gives the solo learning loop a competitive pull.
- Quest map is a single canvasThe map is one full-viewport canvas, so individual lesson vaults are not reachable by keyboard or screen reader and cannot be deep-linked — an accessibility and shareability gap.
- Local-first means device-boundWithout saving the 12-word recovery phrase, clearing the browser wipes progress; the backup prompt is present but easy to skip.
9 visual changes
Share this run
Proof your app is not AI slop
This test was built for app.satquests.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.


























