In this video· click a step to jump to it
Test recording
Columns.live — app walkthrough
85,604 ms · 370,573 pixels changed
We built this regression test for columns.live — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against columns.live. 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 SHEET = '/sheets/4d56d1b6-fec4-49b6-9df6-deec4a6479fb';
const STAMP = Date.now().toString(36);
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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";
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' });
for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**']) {
await page.route(pattern, function (r) { return r.abort(); }).catch(function () {});
}
// ---------- Public context: home ----------Checks run
Notes from the demo run
AI-generatedWe signed up with email and password, pasted five rows of company data, asked two judgment questions as column headers and watched Columns evaluate every row with a confidence number attached. End to end, from landing page to judged spreadsheet, was under two minutes with no email verification step in the way. The thing that makes the product read as trustworthy is the confidence column: every answer carries a score and a 'review below 72%' threshold slider, so the output is a triage list rather than a black box you have to spot-check by hand.
- The landing page spreadsheet is live'The spreadsheet below is live - edit any cell in it' is literally true. A visitor can exercise the core mechanic before creating an account, which is the single best thing an AI tool can do for conversion and still rare.
- Confidence is first-class, not a footnoteEach judgment writes an answer and a conf bar, the header summarises '3 confident / 0 need review / 2 not judged yet', and a slider sets the review threshold. That turns 5,000 rows into a short list of ones to check, which is the actual promise in your h1.
- Usage is legible before it bites/usage shows 5 / 500 row-questions with a per-sheet breakdown and states plainly that the warning fires at 80%. A row-question is defined in one sentence. Usage-based billing usually arrives as a surprise; this does not.
- Signup drops you straight into the workCreate account lands on /sheets with the CSV dropzone and a paste box, no onboarding wizard, no 'connect an integration' wall. Three products we tried this week made us connect a third-party account before showing anything.
- The header still shows SIGN IN / START FREE right after signupImmediately after creating an account and landing on /sheets, the top-right of the page still read 'SIGN IN START FREE' while the sheet list below was already showing our data. The header caught up on a later load. For a first-time user that is a moment of 'did my signup actually work?' at exactly the wrong time - the auth state just needs to reach the header on the same render as the redirect.
- A running job leaves one row un-judged with no explanationOn a 5-row run the counter settled at '4 confident, 0 need review, 1 not judged yet' and the last row showed a bare dot rather than an answer or an error. The row eventually resolves, but during the run there is no per-row state that says 'queued' versus 'failed'. A pending indicator on the cell would stop people re-running and spending row-questions twice.
10 visual changes
Share this run
Proof your app is not AI slop
This test was built for columns.live — 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.





























