In this video· click a step to jump to it
Test recording
PublishNode — app walkthrough
68,335 ms · 87,937 pixels changed
We built this regression test for publishnode.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against publishnode.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`);
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' });
await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
await page.route('**/*sentry-cdn.com/**', function (r) { r.abort(); }).catch(function () {});
// ── 1. Public marketing home ────────────────────────────────────────────
stepLogger.log('Marketing home');
await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
await page.locator('h1, main').first().waitFor({ state: 'visible', timeout: 15000 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedWe registered on PublishNode with email and password, confirmed via the Supabase link, then drove the whole signed-in app: dashboard, the single-post composer, bulk upload in both publishing modes, the publishing history with its three filters, and the Add Sites form which we filled with a sample site. The shell is genuinely nice. Sidebar, stat cards, empty states and the collapsed-sidebar mode all behave, and the free plan visibly hands you 10 credits up front. The problem is that none of those 10 credits can be spent until a WordPress site is connected, and connecting one needs WP admin access plus a plugin install. That is a long way to walk before seeing anything work.
- Empty states that actually instructEvery gated screen says exactly what is missing ('No sites available. Please add a site from the dashboard first.') instead of rendering a dead form. That is better than most launch-week apps.
- The plugin explainer is well judgedOn Add Sites you spell out what the plugin does, that it collects no data, and the five install steps, before asking for credentials. Asking for a WP application password without that panel would feel much worse.
- Bulk mode is a real differentiatorThe 'publish articles to different sites, selected per document' toggle is the thing an agency would actually pay for. It is currently buried one click inside Bulk Upload.
- Ten free credits you cannot spendThe dashboard grants 10 credits on signup, but Single Post and Bulk Upload both hard-stop on 'no sites available', and adding a site needs WP admin plus a plugin install. Anyone evaluating you in five minutes sees four locked screens. A demo site, or letting the composer run against a sandbox and preview the AI draft without publishing, would let the credits do their selling.
- WordPress credentials are kept in the browserThe Add Sites panel says 'Credentials are stored locally in your browser for now. Connect a secure backend later.' That is an honest note, but it means a WordPress application password sits in local storage and is exposed to any XSS on the page. Worth moving server-side (encrypted at rest) before this gets much traction, and worth not saying out loud on the form in the meantime.
- Save Credentials·We filled the connect-a-site form to show it working but deliberately did not submit fake WordPress credentials into your database.
- Download Plugin·Skipped the file download rather than trigger a real artefact fetch during the run.
5 visual changes
Share this run
Proof your app is not AI slop
This test was built for publishnode.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.














