In this video· click a step to jump to it
Test recording
PublishLoud — app walkthrough
67,400 ms · 634 pixels changed
We built this regression test for www.publishloud.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against www.publishloud.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36';
await page.context().setExtraHTTPHeaders({ 'User-Agent': UA }).catch(() => {});
for (const pat of [
'**/cdn-cgi/scripts/**/email-decode.min.js',
'**/browser.sentry-cdn.com/**',
'**/cdn.segment.com/**',
'**/connect.facebook.net/**',
'**/www.googletagmanager.com/**',
'**/static.hotjar.com/**',
]) { await page.route(pat, r => r.abort()).catch(() => {}); }
Checks run
Notes from the demo run
AI-generatedWe signed into PublishLoud with Google, created a company desk for Lastest and then drove the whole Today desk: all four setup cards (Company, Voice, GitHub, Channels) and all six desk sections (Today, Scheduled, Plan, Yesterday, History, Settings). Setup is genuinely two minutes - company name plus URL and you're reading the site immediately - and the section switcher writes a ?tab= param so state survives a reload.
- Two-field setup, then it starts workingCompany name + website was all it took; 'Reading your website' fired straight away and the desk was populated before we'd configured voice or channels. The time-to-first-value here is short.
- Setup checklist stays visible without blocking'Finish desk setup 1 of 4 done' sits above the desk rather than gating it, so we could explore Today, Plan and History before finishing configuration.
- Section names don't work as URLsThe tabs are query params, so /publishloud/scheduled, /publishloud/plan and /publishloud/settings all return your '404 - this page has floated away' page. Anyone who bookmarks or guesses a section from the tab label dead-ends. A redirect from /publishloud/<section> to ?tab=<section> is a small fix.
- Section buttons resolve to an off-screen copy firstEach section button (Today, Scheduled, Plan...) matches twice in the DOM and the first match isn't visible, so a normal click targeting the label hit a hidden element. Screen readers and keyboard users walk that same duplicate set.
6 visual changes
Share this run
Proof your app is not AI slop
This test was built for www.publishloud.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.

















