In this video· click a step to jump to it
Test recording
Goodkyn — personal library walkthrough
90,043 ms · 756,251 pixels changed
We built this regression test for goodkyn.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against goodkyn.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const SITE = (baseUrl || 'https://goodkyn.com').replace(/\/$/, '');
const PAGE = '/lastestreads';
let n = 0;
const shot = async (slug) => {
n += 1;
const p = String(screenshotPath).replace(/\.png$/i, '') + '-' + String(n).padStart(2, '0') + '-' + slug + '.png';
await page.screenshot({ path: p, fullPage: false });
stepLogger.log('frame ' + n + ' ' + slug + ' :: ' + page.url());
};
const settle = async (ms) => { await page.waitForTimeout(ms); };
const go = async (path, ms) => {Checks run
Notes from the demo run
AI-generatedWe claimed goodkyn.com/lastestreads, confirmed it inside your five-minute window, built a three-book library with notes, pinned a recommendation, and walked the timeline, mentions, tagging, reading-club and Goodreads-import flows. The claim-then-confirm-in-five-minutes mechanic is the most interesting thing here - it solves username squatting without making anyone create an account first.
- Claim first, account later - and a timer that means itYou type a name, the page is yours immediately, and a visible countdown tells you the name is released if you do not confirm in five minutes. Most products make you sign up before you can see anything; this inverts it and still protects the namespace.
- Cover art resolves from a title aloneWe typed 'Thinking in Systems' and 'Seeing Like a State' with nothing else and both came back with real cover images. That one touch is the difference between a list and a shelf.
- The timeline is private by default and says so'Your adds, removals, tags, collabs, and follows. Only you can see this.' Stating the privacy boundary on the surface itself, rather than in a settings page, is the right place for it.
- The Goodreads import is honest about what it cannot do'Goodreads does not let other apps pull your library directly. Export it there, then upload the CSV here', followed by three numbered steps. No fake one-click promise.
- The Mentions tab shows the TimelineClicking Mentions renders the same list and the same 'Your adds, removals, tags, collabs, and follows. Only you can see this.' header as Timeline - so the one place a reader would check to see who tagged them is currently a copy of their own activity log.
- Product paths are claimable as usernamesgoodkyn.com/settings, /me, /discover and /explore all offer 'Nobody has claimed this name yet. Claim settings'. Someone can take a word you will want for a real route later, and /login already exists, so the collision is live. A small reserved-word denylist at claim time avoids having to take a name back off a user.
- Export CSV·Triggers a file download - not useful in a recorded walk.
- Upload Goodreads CSV·Opened the import dialog and stopped there; no file uploaded to a founder's account.
6 visual changes
Share this run
Proof your app is not AI slop
This test was built for goodkyn.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.

















