In this video· click a step to jump to it
Test recording
ZeroBreakout — app walkthrough
77,536 ms · 85,979 pixels changed
We built this regression test for www.zerobreakout.in — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.zerobreakout.in. 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 SCROLL_THROUGH = "(async () => { const ease = t => 1 - Math.pow(1 - t, 3); const max = Math.max(0, document.body.scrollHeight - window.innerHeight); if (max < 40) return; const anim = (a, b, ms) => new Promise(res => { const t0 = performance.now(); const step = now => { const p = Math.min(1, (now - t0) / ms); window.scrollTo(0, a + (b - a) * ease(p)); p < 1 ? requestAnimationFrame(step) : res(); }; requestAnimationFrame(step); }); await anim(0, max, 1100); await new Promise(r => setTimeout(r, 280)); await anim(max, 0, 650); })()";
await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36' });
for (const pattern of ['**/cdn-cgi/scripts/**', '**/sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/*.posthog.com/**', '**/google-analytics.com/**', '**/googletagmanager.com/**', '**/fundingchoicesmessages.google.com/**', '**/pagead2.googlesyndication.com/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
const tab = async function (label, n, slug) {
await page.getByRole('button', { name: label, exact: false }).first().click({ timeout: 12000 }).catch(function () {});
await page.waitForTimeout(3400);
await page.evaluate(SCROLL_THROUGH).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe signed into ZeroBreakout with Google and drove the scanner the way a trader would: searched TRENT, cycled through the Near-52W-High, ATH Breakout, MA Crossover, IPO Breakout and Fresh Today filters, then opened Stock Setup, the personal Watchlist and Account & Settings. The scanner itself is fast and dense, and the fact that the whole universe is browsable before you sign in is a strong choice.
- The product works before the login wall1,110 NSE scrips, live prices and every breakout filter are usable anonymously. Sign-in only adds the watchlist and Telegram alerts. That is the right split and most scanners get it backwards.
- Freshness is stated, not implied'NSE Market Active (09:15 - 15:30 IST)', 'EOD Synced', 'Auto-Scan Clock 5:00 PM IST' are on screen permanently. For EOD data, saying when it last ran is the whole trust argument.
- Compliance handled in plain sightThe SEBI disclaimer and 'educational and mathematical pattern identification' framing sit in the account page rather than buried in a footer link.
- Filtered views cannot be linked or bookmarkedScanner, Stock Setup and Watchlist all leave the URL at the root - navigating straight to /stock-setup bounces to /. A trader who finds a good ATH-breakout screen has no way to bookmark it or send it to someone, which is the cheapest growth loop a scanner has.
- The watchlist empty state points at an affordance we could not findIt reads 'Star any stock from the Scanner or Setup page', but no star control was visible on the scanner rows at 1280px. The one feature the sign-in unlocks has no obvious way in.
8 visual changes
Share this run
Proof your app is not AI slop
This test was built for www.zerobreakout.in — 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.























