docs · step recorder
A repro that runs, not a video to watch.
Zidl keeps a rolling buffer of what happened before the bug, because nobody knows a bug exists until they hit it. Trim it, attach it, and it exports as a Playwright test.
Always on, trimmed after the fact
The recorder captures clicks, typing, selects, Enter and Escape, and navigations, into a buffer that spans tabs and survives reloads. It is running before anyone decides something is wrong, which is the only way to catch the steps that led there.
When you file a task you see the trail and cut it down to the part that matters. Only the confirmed tail is attached to the report.
The export
The attached steps export as a runnable spec, so the repro arrives as code rather than as prose or a recording someone has to sit through:
await page.getByRole('link', { name: 'Cart' }).click()
await page.getByTestId('qty-4242').fill('3')
await page.getByLabel('Card number').fill('4242 4242 4242 4242')
await page.getByRole('button', { name: 'Place order' }).click()Locators prefer role, then test id, then label — the same order the Playwright docs recommend, so the output reads like a test a person would have written and keeps working when the markup moves.
What it refuses to record
- Anything typed into a password field is never captured — not redacted afterwards, never recorded.
- Route grouping keeps parameter names and drops their values, so
/orders?tab,ididentifies the screen without carrying a customer's order number into the report. - The buffer lives in the browser. Nothing leaves until someone publishes deliberately.