In this video· click a step to jump to it
A
Passed ✓
Test recording
BetterRetain — app walkthrough
47,751 ms · 3,241 pixels changed
We built this regression test for app.betterretain.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against app.betterretain.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const shot = (n, s) => screenshotPath.replace('.png', `-${n}-${s}.png`);
const ORIGIN = new URL("https://app.betterretain.com/app/dashboard").origin;
page.setDefaultTimeout(8000);
page.setDefaultNavigationTimeout(22000);
await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36' }).catch(function(){});
// block heavy third-party noise: speeds networkidle + removes console-error reds
for (const pat of ['**/client.crisp.chat/**','**/widget.intercom.io/**','**/*.intercomcdn.com/**','**/js.stripe.com/**','**/*.sentry-cdn.com/**','**/*.sentry.io/**','**/cdn.segment.com/**','**/*.hotjar.com/**','**/*.fullstory.com/**','**/connect.facebook.net/**','**/googletagmanager.com/**','**/google-analytics.com/**','**/cdn-cgi/scripts/**/email-decode.min.js']) {
await page.route(pat, function(r){ r.abort().catch(function(){}); }).catch(function(){});
}
// Scenario 1: public hero
await page.goto("https://betterretain.com", { waitUntil: 'domcontentloaded' });Checks run
Run
✓
Visual
0.08%
Text
—
DOM
✓
Network
+18 −9
Console
✓
A11y
Review
Perf
162 over
URL
✓
Variables
—
Full report
Log in →
3,241
Diff px
48s
Duration
Review
Accessible
WCAG 2.2
C
Fast
Web Vitals · 70
Notes from the demo run
AI-generatedBetterRetain drops you straight into a recovery dashboard after signup (no email-verify gate) with a focused left rail: Dashboard, Recover Now, Stripe Accounts and Recovery Logs. It's a tight, single-purpose tool for clawing back failed Stripe subscription payments.
Highlights
- Zero-friction onboardingSignup auto-sessions straight into the app dashboard with no verify wall, so an evaluator sees the product immediately.
- Single-purpose clarityFour nav items, one job (recover failed subs); the information architecture doesn't make you hunt for the core action.
Friction points
- Empty until Stripe is connectedEvery screen is a zero-state until you link a Stripe account; a seeded sample dataset would demonstrate value before connecting.
Visual change
Share this run
Earned · Lastest awards
Proof your app is not AI slop
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,761 test runs recorded · 1,174 products tested with Lastest
This test was built for app.betterretain.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.


