In this video· click a step to jump to it
Test recording
narrativee — app walkthrough
46,982 ms · 10 pixels changed
We built this regression test for narrativee.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against narrativee.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":"/workspace","publicMaxNav":1,"steps":[{"goto":"/workspace","dismiss":true,"label":"workspace-home"},{"goto":"/workspace/calendar","label":"content-calendar"},{"goto":"/workspace/channels","label":"channels"},{"goto":"/workspace/memory","label":"memory"},{"goto":"/workspace/hooks","label":"hooks"},{"goto":"/workspace/create","label":"draft-packs"},{"goto":"/workspace/create/new","label":"new-creation"},{"goto":"/workspace/channels","clickText":"Connect|Add channel|Add newsletter|Newsletter|Add","label":"connect-channel"}]};
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-generatedNarrativee is a content-repurposing workspace for newsletter creators — turn one newsletter into platform-native drafts. The authenticated workspace is well-organized: a left rail with Create, Calendar, Channels, Memory and a Hooks Library, a credit meter (40 free trial credits), and a 'draft packs' hub. The IA clearly maps to the repurposing workflow (bring a source in, generate drafts, schedule them out).
- Clean workspace IACreate / Calendar / Channels / Memory / Hooks Library is an intuitive mental model for a repurposing tool — each section maps to a real step of the workflow.
- Credit-based free trial40 trial credits are shown up front, so an evaluator knows exactly what they can try before committing.
- 'Memory' + 'Hooks Library'Persisted brand memory and a reusable hooks library are thoughtful differentiators over a one-shot generator.
- 'Try Instant Demo' is brokenThe onboarding's 'Try Instant Demo' button (which should drop you into a seeded sandbox) fails server-side with 'Failed to seed demo sandbox' (404). On launch day this is the single highest-impact fix — it's the fastest path to first value and it currently dead-ends.
- Create needs a source firstThe /workspace/create/new flow asks to 'Select newsletter source' before anything happens — with no connected channel there's no quick way to see a generated draft. A demo/sample source would let evaluators feel the magic immediately.
Visual change
Share this run
Proof your app is not AI slop
This test was built for narrativee.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.


