playwright-cli
Originally frommicrosoft/playwright-cli
SKILL.md
Browser Automation with playwright-cli
Quick start
# open new browser
npx --yes @playwright/cli@latest open
# navigate to a page
npx --yes @playwright/cli@latest goto https://playwright.dev
# interact with the page using refs from the snapshot
npx --yes @playwright/cli@latest click e15
npx --yes @playwright/cli@latest type "page.click"
npx --yes @playwright/cli@latest press Enter
# take a screenshot (rarely used, as snapshot is more common)
npx --yes @playwright/cli@latest screenshot
# close the browser
npx --yes @playwright/cli@latest close
Commands
Core
npx --yes @playwright/cli@latest open
# open and navigate right away
npx --yes @playwright/cli@latest open https://example.com/
npx --yes @playwright/cli@latest goto https://playwright.dev
npx --yes @playwright/cli@latest type "search query"
npx --yes @playwright/cli@latest click e3
npx --yes @playwright/cli@latest dblclick e7
npx --yes @playwright/cli@latest fill e5 "user@example.com"
npx --yes @playwright/cli@latest drag e2 e8
npx --yes @playwright/cli@latest hover e4
npx --yes @playwright/cli@latest select e9 "option-value"
npx --yes @playwright/cli@latest upload ./document.pdf
npx --yes @playwright/cli@latest check e12
npx --yes @playwright/cli@latest uncheck e12
npx --yes @playwright/cli@latest snapshot
npx --yes @playwright/cli@latest snapshot --filename=after-click.yaml
npx --yes @playwright/cli@latest eval "document.title"
npx --yes @playwright/cli@latest eval "el => el.textContent" e5
npx --yes @playwright/cli@latest dialog-accept
npx --yes @playwright/cli@latest dialog-accept "confirmation text"
npx --yes @playwright/cli@latest dialog-dismiss
npx --yes @playwright/cli@latest resize 1920 1080
npx --yes @playwright/cli@latest close
Navigation
npx --yes @playwright/cli@latest go-back
npx --yes @playwright/cli@latest go-forward
npx --yes @playwright/cli@latest reload
Keyboard
npx --yes @playwright/cli@latest press Enter
npx --yes @playwright/cli@latest press ArrowDown
npx --yes @playwright/cli@latest keydown Shift
npx --yes @playwright/cli@latest keyup Shift
Mouse
npx --yes @playwright/cli@latest mousemove 150 300
npx --yes @playwright/cli@latest mousedown
npx --yes @playwright/cli@latest mousedown right
npx --yes @playwright/cli@latest mouseup
npx --yes @playwright/cli@latest mouseup right
npx --yes @playwright/cli@latest mousewheel 0 100
Save as
npx --yes @playwright/cli@latest screenshot
npx --yes @playwright/cli@latest screenshot e5
npx --yes @playwright/cli@latest screenshot --filename=page.png
npx --yes @playwright/cli@latest pdf --filename=page.pdf
Tabs
npx --yes @playwright/cli@latest tab-list
npx --yes @playwright/cli@latest tab-new
npx --yes @playwright/cli@latest tab-new https://example.com/page
npx --yes @playwright/cli@latest tab-close
npx --yes @playwright/cli@latest tab-close 2
npx --yes @playwright/cli@latest tab-select 0
Storage
npx --yes @playwright/cli@latest state-save
npx --yes @playwright/cli@latest state-save auth.json
npx --yes @playwright/cli@latest state-load auth.json
# Cookies
npx --yes @playwright/cli@latest cookie-list
npx --yes @playwright/cli@latest cookie-list --domain=example.com
npx --yes @playwright/cli@latest cookie-get session_id
npx --yes @playwright/cli@latest cookie-set session_id abc123
npx --yes @playwright/cli@latest cookie-set session_id abc123 --domain=example.com --httpOnly --secure
npx --yes @playwright/cli@latest cookie-delete session_id
npx --yes @playwright/cli@latest cookie-clear
# LocalStorage
npx --yes @playwright/cli@latest localstorage-list
npx --yes @playwright/cli@latest localstorage-get theme
npx --yes @playwright/cli@latest localstorage-set theme dark
npx --yes @playwright/cli@latest localstorage-delete theme
npx --yes @playwright/cli@latest localstorage-clear
# SessionStorage
npx --yes @playwright/cli@latest sessionstorage-list
npx --yes @playwright/cli@latest sessionstorage-get step
npx --yes @playwright/cli@latest sessionstorage-set step 3
npx --yes @playwright/cli@latest sessionstorage-delete step
npx --yes @playwright/cli@latest sessionstorage-clear
Network
npx --yes @playwright/cli@latest route "**/*.jpg" --status=404
npx --yes @playwright/cli@latest route "https://api.example.com/**" --body='{"mock": true}'
npx --yes @playwright/cli@latest route-list
npx --yes @playwright/cli@latest unroute "**/*.jpg"
npx --yes @playwright/cli@latest unroute
DevTools
npx --yes @playwright/cli@latest console
npx --yes @playwright/cli@latest console warning
npx --yes @playwright/cli@latest network
npx --yes @playwright/cli@latest run-code "async page => await page.context().grantPermissions(['geolocation'])"
npx --yes @playwright/cli@latest tracing-start
npx --yes @playwright/cli@latest tracing-stop
npx --yes @playwright/cli@latest video-start
npx --yes @playwright/cli@latest video-stop video.webm
Open parameters
# Use specific browser when creating session
npx --yes @playwright/cli@latest open --browser=chrome
npx --yes @playwright/cli@latest open --browser=firefox
npx --yes @playwright/cli@latest open --browser=webkit
npx --yes @playwright/cli@latest open --browser=msedge
# Connect to browser via extension
npx --yes @playwright/cli@latest open --extension
# Use persistent profile (by default profile is in-memory)
npx --yes @playwright/cli@latest open --persistent
# Use persistent profile with custom directory
npx --yes @playwright/cli@latest open --profile=/path/to/profile
# Start with config file
npx --yes @playwright/cli@latest open --config=my-config.json
# Close the browser
npx --yes @playwright/cli@latest close
# Delete user data for the default session
npx --yes @playwright/cli@latest delete-data
Snapshots
After each command, playwright-cli provides a snapshot of the current browser state.
> npx --yes @playwright/cli@latest goto https://example.com
### Page
- Page URL: https://example.com/
- Page Title: Example Domain
### Snapshot
[Snapshot](.playwright-cli/page-2026-02-14T19-22-42-679Z.yml)
You can also take a snapshot on demand using npx --yes @playwright/cli@latest 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
# create new browser session named "mysession" with persistent profile
npx --yes @playwright/cli@latest -s=mysession open example.com --persistent
# same with manually specified profile directory (use when requested explicitly)
npx --yes @playwright/cli@latest -s=mysession open example.com --profile=/path/to/profile
npx --yes @playwright/cli@latest -s=mysession click e6
npx --yes @playwright/cli@latest -s=mysession close # stop a named browser
npx --yes @playwright/cli@latest -s=mysession delete-data # delete user data for persistent session
npx --yes @playwright/cli@latest list
# Close all browsers
npx --yes @playwright/cli@latest close-all
# Forcefully kill all browser processes
npx --yes @playwright/cli@latest kill-all
Specific tasks
- Request mocking references/request-mocking.md
- Running Playwright code references/running-code.md
- Browser session management references/session-management.md
- Storage state (cookies, localStorage) references/storage-state.md
- Test generation references/test-generation.md
- Tracing references/tracing.md
- Video recording references/video-recording.md
Weekly Installs
3
Repository
willbooster/agent-skillsGitHub Stars
1
First Seen
6 days ago
Security Audits
Installed on
codex3
gemini-cli3
claude-code3
mcpjam2
openhands2
zencoder2