Browser Automation with playwright-cli
Quick start
bash
playwright-cli open https://playwright.dev playwright-cli click e15 playwright-cli type "page.click" playwright-cli press Enter
Core workflow
- •Navigate:
playwright-cli open https://example.com - •Interact using refs from the snapshot
- •Re-snapshot after significant changes
Commands
Core
bash
playwright-cli open https://example.com/ playwright-cli close 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 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
Navigation
bash
playwright-cli go-back playwright-cli go-forward playwright-cli reload
Keyboard
bash
playwright-cli press Enter playwright-cli press ArrowDown playwright-cli keydown Shift playwright-cli keyup Shift
Mouse
bash
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
bash
playwright-cli screenshot playwright-cli screenshot e5 playwright-cli pdf
Tabs
bash
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
DevTools
bash
playwright-cli console playwright-cli console warning playwright-cli network playwright-cli run-code "await page.waitForTimeout(1000)" playwright-cli tracing-start playwright-cli tracing-stop
Sessions
bash
playwright-cli --session=mysession open example.com playwright-cli --session=mysession click e6 playwright-cli session-list playwright-cli session-stop mysession playwright-cli session-stop-all playwright-cli session-delete playwright-cli session-delete mysession
Example: Form submission
bash
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
Example: Multi-tab workflow
bash
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
Converting to Automated Tests
After debugging interactively, create automated E2E test:
bash
# Step 1: Debug workflow with CLI
playwright-cli open http://localhost:5173
playwright-cli snapshot
playwright-cli fill e5 "user@example.com"
playwright-cli click e7
# Step 2: Create test file
# Copy template from: playwright-e2e/templates/basic-test.ts
# Step 3: Convert CLI refs to semantic selectors
# e5 → page.getByLabel('Email')
# e7 → page.getByRole('button', { name: /submit/i })
Example: CLI → Test Conversion
typescript
import { test, expect } from '@playwright/test';
test('should submit contact form', async ({ page }) => {
await page.goto('/');
// CLI: fill e5 "user@example.com"
await page.getByLabel('Email').fill('user@example.com');
// CLI: click e7
await page.getByRole('button', { name: /submit/i }).click();
await expect(page.getByText('Success')).toBeVisible();
});
Cross-Reference: See playwright-e2e skill for templates and test patterns