Skip to content

Playwright CLI Skill

tools

Use when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script.

Files

9 files

Click on a file to preview its contents.

Instructions

nameplaywright
descriptionUse when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script.

Playwright CLI Skill

Drive a real browser from the terminal using playwright-cli. Prefer the bundled wrapper script so the CLI works even when it is not globally installed. Treat this skill as CLI-first automation. Do not pivot to @playwright/test unless the user explicitly asks for test files.

Prerequisite check (required)

Before proposing commands, check whether npx is available (the wrapper depends on it):

command -v npx >/dev/null 2>&1

If it is not available, pause and ask the user to install Node.js/npm (which provides npx). Provide these steps verbatim:

1# Verify Node/npm are installed
2node --version
3npm --version
4
5# If missing, install Node.js/npm, then:
6npm install -g @playwright/mcp@latest
7playwright-cli --help

Once npx is present, proceed with the wrapper script. A global install of playwright-cli is optional.

Skill path (set once)

export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
export PWCLI="$CODEX_HOME/skills/playwright/scripts/playwright_cli.sh"

User-scoped skills install under $CODEX_HOME/skills (default: ~/.codex/skills).

Quick start

Use the wrapper script:

1"$PWCLI" open https://playwright.dev --headed
2"$PWCLI" snapshot
3"$PWCLI" click e15
4"$PWCLI" type "Playwright"
5"$PWCLI" press Enter
6"$PWCLI" screenshot

If the user prefers a global install, this is also valid:

npm install -g @playwright/mcp@latest
playwright-cli --help

Core workflow

  1. Open the page.
  2. Snapshot to get stable element refs.
  3. Interact using refs from the latest snapshot.
  4. Re-snapshot after navigation or significant DOM changes.
  5. Capture artifacts (screenshot, pdf, traces) when useful.

Minimal loop:

1"$PWCLI" open https://example.com
2"$PWCLI" snapshot
3"$PWCLI" click e3
4"$PWCLI" snapshot

When to snapshot again

Snapshot again after:

  • navigation
  • clicking elements that change the UI substantially
  • opening/closing modals or menus
  • tab switches

Refs can go stale. When a command fails due to a missing ref, snapshot again.

Recommended patterns

Form fill and submit

1"$PWCLI" open https://example.com/form
2"$PWCLI" snapshot
3"$PWCLI" fill e1 "user@example.com"
4"$PWCLI" fill e2 "password123"
5"$PWCLI" click e3
6"$PWCLI" snapshot

Debug a UI flow with traces

1"$PWCLI" open https://example.com --headed
2"$PWCLI" tracing-start
3# ...interactions...
4"$PWCLI" tracing-stop

Multi-tab work

1"$PWCLI" tab-new https://example.com
2"$PWCLI" tab-list
3"$PWCLI" tab-select 0
4"$PWCLI" snapshot

Wrapper script

The wrapper script uses npx --package @playwright/mcp playwright-cli so the CLI can run without a global install:

"$PWCLI" --help

Prefer the wrapper unless the repository already standardizes on a global install.

References

Open only what you need:

  • CLI command reference: references/cli.md
  • Practical workflows and troubleshooting: references/workflows.md

Guardrails

  • Always snapshot before referencing element ids like e12.
  • Re-snapshot when refs seem stale.
  • Prefer explicit commands over eval and run-code unless needed.
  • When you do not have a fresh snapshot, use placeholder refs like eX and say why; do not bypass refs with run-code.
  • Use --headed when a visual check will help.
  • When capturing artifacts in this repo, use output/playwright/ and avoid introducing new top-level artifact folders.
  • Default to CLI commands and workflows, not Playwright test specs.