In this video· click a step to jump to it
Test recording
Portfolio Terminal — app walkthrough
85,109 ms · 3,389 pixels changed
We built this regression test for portfolio-terminal.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against portfolio-terminal.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, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
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' });
await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/connect.facebook.net/**', function (r) { r.abort(); }).catch(function () {});
// ── Step 1: public home (context) ───────────────────────────────────────
stepLogger.log('Step 1: Public home');
await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
await page.waitForLoadState('networkidle', { timeout: 2500 }).catch(function () {});
await page.locator('h1, main').first().waitFor({ state: 'visible', timeout: 10000 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe signed in with the email code, imported the example portfolio through your three-step Import → Review → Confirm flow, and then walked the signed-in terminal with three live positions (AAPL, MSFT, TSLA, $6,558.74). Thirteen steps recorded. The review step is the best part of the product: it shows every pending change with a running 'nothing is written until you press the button' promise, and it keeps that promise.
- Import that earns trust before it writes'3 holdings ADDED / 0 CHANGED / 0 UNTOUCHED' with a Save button underneath is the clearest import diff we have driven. Most trackers just swallow the file.
- Insights appear at import time, not laterWithin seconds of saving, 'AAPL is 51% of your portfolio — overweight +18pts' and 'TSLA: P/E 334' were already on the overview. The product made a point on its first screen.
- Risk panel is honest about thin dataThe correlation matrix renders but is labelled INCOMPLETE ANALYSIS with 'Missing: 30 daily returns'. Saying what it cannot conclude is rarer than showing a number.
- Paste-or-screenshot beats broker OAuthNo account linking, no waiting list. We went from signed-in to a scored portfolio in under a minute.
- Performance chart is empty on day oneA portfolio imported today plots a single datapoint, so the largest panel on the overview reads as a blank chart right after the most satisfying moment in the flow. Backfilling from the buy dates you already collected, or swapping in the allocation donut until there are two datapoints, would keep that screen earning its space.
- Three critical accessibility violationsOur axe-core pass scored 87 with 3 critical rules failing across the signed-in terminal. Dense financial UIs usually trip contrast and name-role-value; worth one pass.
12 visual changes
Share this run
Proof your app is not AI slop
This test was built for portfolio-terminal.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.



































