Recording of the visual regression run on tapeline.io · tapeline — app walkthrough.

In this video· click a step to jump to it

T
Passed ✓

Test recording

tapeline — app walkthrough

85,119 ms · 1,062,693 pixels changed

We built this regression test for tapeline.io — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against tapeline.io. 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, slug) => screenshotPath.replace('.png', `-${n}-${slug}.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, 900); await new Promise(r => setTimeout(r, 250)); await anim(max, 0, 500); })()";

  stepLogger.log('Scenario 1: Homepage');
  await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
  const accept = page.getByRole('button', { name: /accept|allow|got it|ok$/i }).first();
  if (await accept.isVisible().catch(function () { return false; })) { await accept.click().catch(function () {}); }
  await page.waitForTimeout(1500);
  await page.evaluate(SCROLL_THROUGH).catch(function () {});
  await page.screenshot({ path: shot(1, 'home'), fullPage: true });
+53 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
79.13%
Text
—
DOM
✓
Network
+396 −396
Console
✓
A11y
A
Perf
187 over
URL
✓
Variables
—
Full report
Log in →
1,062,693
Diff px
1m 25s
Duration
A
Accessible
WCAG 2.2 · 94
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

Tapeline's authed scanner is dense but fast: every ticker row carries a 6-factor score and a sparkline, and the ticker view pulls analyst consensus, financials and live news into one screen. The Premium-trial banner sits above the fold on every in-app route.

Highlights
  • Formula transparency
    Your Tapeline Score breaks into Trend / Relative strength / Fundamentals / Smart money / Macro / Momentum with weights shown on the ticker page. Rare honesty for a scanner.
  • Ticker depth
    The NVDA page loads score, analyst ratings (64 Buy / 4 Hold / 1 Sell), financials and recent news without a reload.
Friction points
  • Trial banner on every route
    The '14 days left, add a card' bar renders on the scanner, ticker, heatmap and every other in-app page, competing with the data. Collapsing it after first view would give the tables more room.
  • Live-data never idles
    The news/prices poll (refreshing every 60s) means pages never reach network-idle; naive automated checks can stall. Worth a settled-state signal for testing.

11 visual changes

Step 1940 px changed
Before
Before
After
After
Diff
Diff
Step 2804,120 px changed
Before
Before
After
After
Diff
Diff
Step 342,619 px changed
Before
Before
After
After
Diff
Diff
Step 4121,067 px changed
Before
Before
After
After
Diff
Diff
Step 572 px changed
Before
Before
After
After
Diff
Diff
Step 631,000 px changed
Before
Before
After
After
Diff
Diff
Step 719,461 px changed
Before
Before
After
After
Diff
Diff
Step 841,654 px changed
Before
Before
After
After
Diff
Diff
Step 936 px changed
Before
Before
After
After
Diff
Diff
Step 10862 px changed
Before
Before
After
After
Diff
Diff
Step 11862 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,421 test runs recorded · 1,174 products tested with Lastest

This test was built for tapeline.io — 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.