In this video· click a step to jump to it
Test recording
Sineema — app walkthrough
174,112 ms · 51,465 pixels changed
We built this regression test for cineema.app — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against cineema.app. 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, 1200); await new Promise(r => setTimeout(r, 300)); await anim(max, 0, 700); })()";
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 ['**/*googletagmanager*/**', '**/*google-analytics*/**', '**/*.google-analytics.com/**', '**/connect.facebook.net/**']) {
await page.route(pattern, function (r) { r.abort().catch(function () {}); }).catch(function () {});
}
let n = 1;
const clickBtn = async function (label) {
const btn = page.getByRole('button', { name: label, exact: true }).first();Checks run
Notes from the demo run
AI-generatedSineema turns Hollywood blockbusters into Ugandan-VJ-narrated films, and the authenticated home is a genuinely rich, well-organized catalog: New arrivals, Trending now, Series and every genre from Crime to Sci-Fi, fronted by a Netflix-grade featured hero. A one-tap Google sign-in drops you straight into a fully populated library (FREE until 3 August), and the standout 'By VJ' view lets you browse the whole catalog by narrator.
- By-VJ browsing is the differentiatorThe 'By VJ' view organizes the catalog by narrator with per-VJ film/series counts (VJ Junior alone has 72 films + 12 series) - a genuinely novel way to browse that leans into what makes Sineema special.
- Instant Google sign-in into a full catalogOne tap with Google and you land in a fully populated, genre-organized library - no empty state and no paywall during the free window.
- Nav views share one URLHome / Trending / Downloads / Requests all render at the same URL, so a viewer can't deep-link or refresh into Trending; giving each view its own route would help sharing and SEO.
- 'A new version is available' banner persistsThe refresh-now banner sits above the featured hero on every view; auto-refreshing on idle or dismissing after one view would clean up the first impression.
2 visual changes
Share this run
Proof your app is not AI slop
This test was built for cineema.app — 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.





