| name | playwright-cli |
| description | Interactive browser automation via playwright-cli (snapshots, tracing, exploration). For this repository, committed Playwright tests follow .agents/shared/openproject-e2e.md; use this skill for CLI sessions and mapping selectors into locators, not for pasting raw page.* calls into specs. |
| allowed-tools | Bash(playwright-cli:*) |
Browser Automation with playwright-cli
Canonical source for:
.agents/skills/playwright-cli/SKILL.md
.claude/skills/playwright-cli/SKILL.md
This repository (integration-qa-helmfile / e2e)
When working in this repository, playwright-cli is for interactive exploration: navigating apps, snapshots, optional tracing/video, and discovering resilient selector strategies. The committed Playwright project lives under e2e/. Committed code (specs, page objects, locators) must follow .agents/shared/openproject-e2e.md: JSON locators in locators/, page objects with getLocator, no inline selectors in tests/, and the logging/error conventions documented there. Generated TypeScript lines from the CLI are inputs for locator keys and page methods, not copy-paste test bodies.
When to prefer CLI vs escalate to Playwright MCP: .agents/shared/playwright-test-authoring.md.
When working under e2e/, this repo’s CLI config is .playwright/cli.config.json (pass --config=.playwright/cli.config.json if not picked up automatically).
Quick start
playwright-cli open
playwright-cli goto https://playwright.dev
playwright-cli click e15
playwright-cli type "page.click"
playwright-cli press Enter
playwright-cli screenshot
playwright-cli close
Commands
Core
playwright-cli open
playwright-cli open https://example.com/
playwright-cli goto https://playwright.dev
playwright-cli type "search query"
playwright-cli click e3
playwright-cli dblclick e7
playwright-cli fill e5 "user@example.com"
playwright-cli drag e2 e8
playwright-cli hover e4
playwright-cli select e9 "option-value"
playwright-cli upload ./document.pdf
playwright-cli check e12
playwright-cli uncheck e12
playwright-cli snapshot
playwright-cli snapshot --filename=after-click.yaml
playwright-cli eval "document.title"
playwright-cli eval "el => el.textContent" e5
playwright-cli dialog-accept
playwright-cli dialog-accept "confirmation text"
playwright-cli dialog-dismiss
playwright-cli resize 1920 1080
playwright-cli close
Navigation
playwright-cli go-back
playwright-cli go-forward
playwright-cli reload
Keyboard
playwright-cli press Enter
playwright-cli press ArrowDown
playwright-cli keydown Shift
playwright-cli keyup Shift
Mouse
playwright-cli mousemove 150 300
playwright-cli mousedown
playwright-cli mousedown right
playwright-cli mouseup
playwright-cli mouseup right
playwright-cli mousewheel 0 100
Save as
playwright-cli screenshot
playwright-cli screenshot e5
playwright-cli screenshot --filename=page.png
playwright-cli pdf --filename=page.pdf
Tabs
playwright-cli tab-list
playwright-cli tab-new
playwright-cli tab-new https://example.com/page
playwright-cli tab-close
playwright-cli tab-close 2
playwright-cli tab-select 0
Storage
playwright-cli state-save
playwright-cli state-save auth.json
playwright-cli state-load auth.json
playwright-cli cookie-list
playwright-cli cookie-list --domain=example.com
playwright-cli cookie-get session_id
playwright-cli cookie-set session_id abc123
playwright-cli cookie-set session_id abc123 --domain=example.com --httpOnly --secure
playwright-cli cookie-delete session_id
playwright-cli cookie-clear
playwright-cli localstorage-list
playwright-cli localstorage-get theme
playwright-cli localstorage-set theme dark
playwright-cli localstorage-delete theme
playwright-cli localstorage-clear
playwright-cli sessionstorage-list
playwright-cli sessionstorage-get step
playwright-cli sessionstorage-set step 3
playwright-cli sessionstorage-delete step
playwright-cli sessionstorage-clear
Network
playwright-cli route "**/*.jpg" --status=404
playwright-cli route "https://api.example.com/**" --body='{"mock": true}'
playwright-cli route-list
playwright-cli unroute "**/*.jpg"
playwright-cli unroute
DevTools
playwright-cli console
playwright-cli console warning
playwright-cli network
playwright-cli run-code "async page => await page.context().grantPermissions(['geolocation'])"
playwright-cli tracing-start
playwright-cli tracing-stop
playwright-cli video-start
playwright-cli video-stop video.webm
Open parameters
playwright-cli open --browser=chrome
playwright-cli open --browser=firefox
playwright-cli open --browser=webkit
playwright-cli open --browser=msedge
playwright-cli open --extension
playwright-cli open --persistent
playwright-cli open --profile=/path/to/profile
playwright-cli open --config=my-config.json
playwright-cli close
playwright-cli delete-data
Snapshots
After each command, playwright-cli provides a snapshot of the current browser state.
> playwright-cli goto https://example.com
- Page URL: https://example.com/
- Page Title: Example Domain
[Snapshot](.playwright-cli/page-2026-02-14T19-22-42-679Z.yml)
You can also take a snapshot on demand using playwright-cli snapshot command.
If --filename is not provided, a new snapshot file is created with a timestamp. Default to automatic file naming, use --filename= when artifact is a part of the workflow result.
Browser Sessions
playwright-cli -s=mysession open example.com --persistent
playwright-cli -s=mysession open example.com --profile=/path/to/profile
playwright-cli -s=mysession click e6
playwright-cli -s=mysession close
playwright-cli -s=mysession delete-data
playwright-cli list
playwright-cli close-all
playwright-cli kill-all
Local installation
In some cases user might want to install playwright-cli locally. If running globally available playwright-cli binary fails, use npx playwright-cli to run the commands. For example:
npx playwright-cli open https://example.com
npx playwright-cli click e1
Example: Form submission
playwright-cli open https://example.com/form
playwright-cli snapshot
playwright-cli fill e1 "user@example.com"
playwright-cli fill e2 "password123"
playwright-cli click e3
playwright-cli snapshot
playwright-cli close
Example: Multi-tab workflow
playwright-cli open https://example.com
playwright-cli tab-new https://example.com/other
playwright-cli tab-list
playwright-cli tab-select 0
playwright-cli snapshot
playwright-cli close
Example: Debugging with DevTools
playwright-cli open https://example.com
playwright-cli click e4
playwright-cli fill e7 "test"
playwright-cli console
playwright-cli network
playwright-cli close
playwright-cli open https://example.com
playwright-cli tracing-start
playwright-cli click e4
playwright-cli fill e7 "test"
playwright-cli tracing-stop
playwright-cli close
Debugging tests (Playwright 1.59+)
For agentic or interactive debugging of npx playwright test runs in this repo:
E2E_ENV=local npx playwright test --debug=cli
npx playwright trace open test-results/<path>/trace.zip
npx playwright trace actions --grep="expect"
When exploring with playwright-cli only, bind sessions for multi-client attach (Playwright 1.59+):
playwright-cli attach my-session
playwright-cli show
See references/tracing.md for CLI trace commands vs test-runner traces.
Specific tasks