Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

Playwriter vs Playwright CLI

The classic Playwright CLI (npx playwright screenshot, pdf, codegen, open) launches a new browser and exposes a small utility command set. The newer @playwright/cli adds a run-code command and can attach to a browser, but by default both still drive a separate browser profile, not the Chrome you're using right now.
Playwriter gives you the full Playwright API and, by design, runs it against your existing Chrome.

Comparison

PlaywriterPlaywright CLI
BrowserYour running Chrome (extension)New browser by default
Login stateYour live sessions, zero setupPersistent profile, separate from your daily Chrome
ExtensionsYour existing onesNone by default
CaptchasDisconnect extension to solve manuallyManaged automation profile
CollaborationSame tab as userSeparate window
Programmable JSexecute with persistent staterun-code (no cross-call state)
Raw CDP accessFirst-classNot exposed
Native videochrome.tabCapture (30-60fps)Trace / screencast based
Cloud + remote tab shareBuilt-inNo

Same API, different browser

Playwriter uses the same Playwright API you already know. The difference is where it runs. Instead of spawning a new browser, your code controls the browser you're already using.
# Playwright CLI: fresh browser, no state npx playwright screenshot https://example.com shot.png # Playwriter: your browser, your cookies, your extensions playwriter -s 1 -e "state.page = await context.newPage(); await state.page.goto('https://example.com'); await state.page.screenshot({ path: './shot.png', scale: 'css' })"

Raw CDP access

Playwriter exposes the full Chrome DevTools Protocol through getCDPSession. This lets agents set breakpoints, profile performance, intercept network requests, and live-edit page scripts. The Playwright CLI doesn't expose CDP at all.
playwriter -s 1 -e "state.cdp = getCDPSession({ page: state.page })" playwriter -s 1 -e "state.cdp.send('Performance.getMetrics').then(console.log)"

Video recording

Playwright CLI records via tracing (file-based, low FPS). Playwriter uses chrome.tabCapture for native 30-60fps recording that survives page navigation.
playwriter -s 1 -e "recording.start({ page: state.page, outputPath: './demo.mp4' })" playwriter -s 1 -e "state.page.click('a'); state.page.waitForLoadState('domcontentloaded')" playwriter -s 1 -e "recording.stop({ page: state.page })"