How it works
From test to doc
in seconds
Write your tests as usual. Driftless reads them and produces clear, structured documentation — no extra effort required.
Your test
workspace.spec.ts
test('user creates a new workspace', async ({ page }) => {
await page.goto('/dashboard');
await page.getByRole('button', { name: 'New workspace' }).click();
await page.getByLabel('Workspace name').fill('Design System');
await page.getByRole('button', { name: 'Create' }).click();
await expect(page.getByText('Design System')).toBeVisible();
});Generated doc
creating-a-workspace.md
## Creating a New Workspace
1. Navigate to the Dashboard
2. Click the "New workspace" button
3. Enter a name for your workspace
4. Click "Create" to confirm
5. Your new workspace appears in the list
// Auto-generated by driftless from workspace.spec.tsFeatures
Built for the way you ship
01
Framework Agnostic
Playwright, Cypress, TestCafe, Detox, WebDriverIO, Nightwatch — driftless works with your existing test setup, no migration required.
02
Always In Sync
GitHub Actions keep your docs fresh on every push. A staleness check flags drift before it ships.
03
Composable Capabilities
Start with doc-generator. Add e2e-writer. Capabilities are modular — pick what fits your workflow.
04
Multiple Doc Targets
Generate plain Markdown, Fumadocs, or Docusaurus output. One config switch, same test suite.
Works with
PlaywrightCypressTestCafeDetoxWebDriverIONightwatch