fugazi/playwright-cli
Drive a live browser from the CLI with playwright-cli to navigate, interact, snapshot, and capture evidence. Use for ad-hoc browser commands, page inspection, screenshots, traces, network mocking, session management, or interactive debugging—not authoring @playwright/test specs. Keywords: playwright-cli, browser automation, live session, snapshot, console, tracing.
npx skills add https://github.com/fugazi/test-automation-skills-agents --skill playwright-cli
playwright-cli open
playwright-cli goto https://playwright.dev
playwright-cli click e15 # use refs from snapshot
playwright-cli type "search query"
playwright-cli press Enter
playwright-cli snapshot
playwright-cli close
playwright-cli open [url]
playwright-cli goto <url>
playwright-cli type "<text>"
playwright-cli click <ref>
playwright-cli dblclick <ref>
playwright-cli fill <ref> "<text>" [--submit]
playwright-cli drag <ref> <ref>
playwright-cli drop <ref> [--path=<file> | --data="mime=value"]
playwright-cli hover <ref>
playwright-cli select <ref> "<value>"
playwright-cli upload <path>
playwright-cli check <ref>
playwright-cli uncheck <ref>
playwright-cli snapshot
playwright-cli find "<text>" | --regex "<pattern>" [--regex "/pattern/i"]
playwright-cli eval "<js>" [ref]
playwright-cli dialog-accept ["text"]
playwright-cli dialog-dismiss
playwright-cli resize <w> <h>
playwright-cli close
playwright-cli go-back | go-forward | reload
playwright-cli press <key> # Enter, ArrowDown, etc.
playwright-cli keydown | keyup <key>
playwright-cli mousemove <x> <y>
playwright-cli mousedown [right]
playwright-cli mouseup [right]
playwright-cli mousewheel <dx> <dy>
playwright-cli screenshot [ref] [--filename=<f>] [--hires]
playwright-cli pdf --filename=<f>
playwright-cli tab-list
playwright-cli tab-new [url]
playwright-cli tab-close [index]
playwright-cli tab-select <index>
playwright-cli state-save [file] | state-load <file>
playwright-cli cookie-list [--domain=] | cookie-get <name>
playwright-cli cookie-set <name> <val> [--domain= --httpOnly --secure]
playwright-cli cookie-delete <name> | cookie-clear
playwright-cli localstorage-list | localstorage-get <key>
playwright-cli localstorage-set <key> <val> | localstorage-delete <key> | localstorage-clear
playwright-cli sessionstorage-list | sessionstorage-get <key>
playwright-cli sessionstorage-set <key> <val> | sessionstorage-delete <key> | sessionstorage-clear
playwright-cli route "<glob>" [--status= | --body=]
playwright-cli route-list
playwright-cli unroute ["<glob>"]
playwright-cli console [warning|error]
playwright-cli requests
playwright-cli request <index>
playwright-cli run-code "<js>" | --filename=<f>
playwright-cli tracing-start | tracing-stop
playwright-cli video-start <file> | video-chapter "<title>" [--description= --duration=] | video-stop
playwright-cli video-show-actions [--duration= --position=] | video-hide-actions
playwright-cli show --annotate # UI review / design feedback
playwright-cli generate-locator <ref> [--raw]
playwright-cli highlight <ref> [--style=] | highlight <ref> --hide | highlight --hide
--raw strips status/snapshot, returns only the result value.
playwright-cli --raw eval "JSON.stringify(performance.timing)"
playwright-cli --raw snapshot > before.yml
playwright-cli click e5
playwright-cli --raw snapshot > after.yml
diff before.yml after.yml
For JSON wrapping: playwright-cli list --json
playwright-cli open --browser=chrome|firefox|webkit|msedge
playwright-cli open --mobile | --device="iPhone 15"
playwright-cli open --persistent | --profile=/path/to/profile
playwright-cli attach --extension=chrome | --cdp=chrome|msedge|http://host:port
playwright-cli open --config=<file>
playwright-cli delete-data
> Windows: See references/windows-notes.md for URL escaping rules.
After each command, playwright-cli provides a snapshot of the current browser state.
playwright-cli snapshot [ref] [--filename=] [--depth=N] [--boxes]
playwright-cli find "<text>"
playwright-cli find --regex "\\$[0-9]+\\.[0-9]{2}"
playwright-cli click e15 # ref from snapshot
playwright-cli click "#main > button.submit" # CSS selector
playwright-cli click "getByRole('button', { name: 'Submit' })" # role locator
playwright-cli click "getByTestId('submit-button')" # test id
playwright-cli -s=<name> open [url] [--persistent | --profile=<dir>]
playwright-cli -s=<name> click e6
playwright-cli -s=<name> close
playwright-cli list
playwright-cli close-all
playwright-cli kill-all
# Check local version
npx --no-install playwright --version
# Use local
npx playwright cli
# Install global
npm install -g @playwright/cli@latest
@playwright/test spec files (use playwright-e2e-testing).webapp-selenium-testing).playwright-regression-testing).--debug=cli as a permanent test runner — it is an exploration/debug aid, not a CI executor.networkidle as a fix for timing issues — prefer web-first assertions.playwright-cli open/-s=<name> open is paired with a close/close-all; no orphan sessions left running.e15) or generated locators, not guessed CSS selectors.--debug=cli runs are terminated before moving on or finishing.Take fugazi/playwright-cli from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm, npx.
Without those the skill loads but fails at the first command.