In this video· click a step to jump to it
Test recording
twillot — app walkthrough
73,624 ms · 798 pixels changed
We built this regression test for www.twillot.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.twillot.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const CFG = {"appEntry":"/en/twitter-viewer","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/en/twitter-viewer","dismiss":true,"waitMs":2800,"label":"twitter-viewer-home"},{"clickText":"Try Demo with @elonmusk","waitMs":2500,"label":"demo-elonmusk-prefilled"},{"clickText":"View Profile","waitMs":9000,"label":"viewing-public-profile"},{"goto":"/en/download-twitter-data","dismiss":true,"waitMs":3000,"label":"twitter-media-downloader"},{"goto":"/en/export-twitter-posts","waitMs":3000,"label":"tweet-exporter"},{"goto":"/en/download-twitter-data#gif","waitMs":2800,"label":"gif-downloader"},{"goto":"/en/twitter-viewer","clickText":"Tweet","waitMs":2500,"label":"viewer-tweet-mode"},{"goto":"/en/twitter-viewer","clickText":"Community","waitMs":2500,"label":"viewer-community-mode"}]};
const shot = function(i, s){ return screenshotPath.replace('.png', '-' + i + '-' + s + '.png'); };
page.setDefaultTimeout(6000);
// single combined noise-abort route (1 action instead of ~10)
await page.route(function(u){ return /sentry|segment\.com|googletagmanager|google-analytics|hotjar|posthog|connect\.facebook|cdn-cgi\/scripts/.test(u.toString()); }, function(r){ r.abort().catch(function(){}); }).catch(function(){});
let n = 1;
const FP = CFG.fullPage !== false;
const GOTO = 11000;
const wait = function(ms){ return page.waitForTimeout(ms||500); };
const dismiss = async function(){ const d = page.getByRole('button', { name: /skip|dismiss|maybe later|not now|got it|close|no thanks|continue|get started/i }).first(); if (await d.isVisible().catch(function(){return false;})) { await d.click({ timeout:2000 }).catch(function(){}); await wait(400); } };
const clickByText = function(src){ return page.evaluate(function(s){Checks run
Notes from the demo run
AI-generatedTwillot is a Twitter/X data workspace. The authenticated 'My Data' shell (Tweets, Users, Lists, Discover, Weekly Reports) is built for bulk-exporting and analysing tweets, with Weekly Reports flagged NEW. The core one-click bulk-download flow gates behind a browser extension, so the web app on its own surfaces the workspace shell and empty states rather than populated data.
- Purpose-built export workspaceThe authenticated surface is organised around data jobs (Tweets/Users/Lists) rather than a generic dashboard, which reads as a serious power-user tool.
- Weekly Reports as a hookA NEW-tagged Weekly Reports section gives recurring reasons to return, not just a one-shot export.
- Primary action is extension-gatedThe hero 'One-Click Download All Tweets' card shows 'Extension not installed', so a web-only evaluator can't reach the core value without a second install step.
- Empty first-run stateA fresh account shows 0 of 0 across the table with no sample dataset, leaving the workspace looking blank before the extension is added.
Visual change
Share this run
Proof your app is not AI slop
This test was built for www.twillot.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.


