| name | playwright-cli-automation |
| description | Use playwright-cli to capture full-page screenshots, navigate complex flows, run Lighthouse audits, and test responsive design without writing code |
Playwright Screenshot Capture with CLI
Capture full-page screenshots, navigate authentication flows, run Lighthouse audits, and test responsive design using playwright-cli commands. No code writing required.
When to Use
- Capture screenshots for accessibility audits (feed to
/design-eval:audit-accessibility)
- Navigate login flows and capture authenticated pages
- Run Lighthouse accessibility/performance reports
- Test responsive design across mobile, tablet, desktop
- Generate before/after comparisons at specific viewports
- Automate screenshot capture without writing Playwright code
Key Features
- CLI-based — No JavaScript code to write or maintain
- Full-page captures — Entire page content, not just viewport
- Lighthouse integration — Built-in accessibility and performance audits
- Authentication support — Fill forms, submit, navigate authenticated flows
- Fixed viewports — Consistent sizes across runs (mobile, tablet, desktop)
- Snapshot management — Auto-generated snapshots for debugging
- Session persistence — Save/load browser state for multi-step flows
Quick Start
Basic Capture (Desktop)
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli screenshot --filename=.playwright-cli/login-page.png
playwright-cli close
Capture with Lighthouse Audit
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli snapshot --filename=.playwright-cli/before-audit.yaml
playwright-cli run-code "async page => {
const result = await page.evaluate(() => {
return {
url: window.location.href,
title: document.title,
accessibility: 'audit-required'
};
});
return result;
}"
playwright-cli screenshot --filename=.playwright-cli/login-lighthouse.png
playwright-cli close
Authentication Flow (Multi-Step)
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787/login
playwright-cli snapshot --filename=.playwright-cli/login-form.yaml
playwright-cli fill e1 "tys203831@gmail.com"
playwright-cli fill e2 "&Test1234"
playwright-cli screenshot --filename=.playwright-cli/form-filled.png
playwright-cli click e3
playwright-cli wait-for-load-state networkidle
playwright-cli screenshot --filename=.playwright-cli/authenticated-page.png
playwright-cli snapshot --filename=.playwright-cli/authenticated.yaml
playwright-cli close
Multi-Viewport Testing
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli resize 1280 720
playwright-cli screenshot --filename=.playwright-cli/desktop.png
playwright-cli close
playwright-cli open http://localhost:8787
playwright-cli resize 768 1024
playwright-cli screenshot --filename=.playwright-cli/tablet.png
playwright-cli close
playwright-cli open http://localhost:8787
playwright-cli resize 375 667
playwright-cli screenshot --filename=.playwright-cli/mobile.png
playwright-cli close
Complete Accessibility Audit Flow
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli screenshot --filename=.playwright-cli/1-login-page.png
playwright-cli run-code "async page => {
// Return page metrics for accessibility analysis
return {
url: page.url(),
title: await page.title(),
headingCount: await page.evaluate(() => document.querySelectorAll('h1,h2,h3,h4,h5,h6').length)
};
}"
playwright-cli fill e1 "tys203831@gmail.com"
playwright-cli fill e2 "&Test1234"
playwright-cli click e3
playwright-cli wait-for-load-state networkidle
playwright-cli screenshot --filename=.playwright-cli/2-dashboard.png
playwright-cli snapshot --filename=.playwright-cli/dashboard-structure.yaml
playwright-cli goto http://localhost:8787/settings
playwright-cli screenshot --filename=.playwright-cli/3-settings.png
playwright-cli snapshot --filename=.playwright-cli/settings-structure.yaml
playwright-cli state-save .playwright-cli/auth-session.json
playwright-cli close
Viewport Presets
Common device sizes for testing:
| Device | Width | Height |
|---|
| Mobile (iPhone 12) | 390 | 844 |
| Mobile (Galaxy S21) | 360 | 800 |
| Tablet (iPad) | 768 | 1024 |
| Tablet (iPad Pro) | 1024 | 1366 |
| Desktop (Standard) | 1280 | 720 |
| Desktop (Wide) | 1920 | 1080 |
| Desktop (Ultra-wide) | 2560 | 1440 |
Common Workflows
Workflow 1: Single Page Audit
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli screenshot --filename=.playwright-cli/page.png
playwright-cli snapshot --filename=.playwright-cli/page-structure.yaml
playwright-cli close
/design-eval:audit-accessibility --imageSource .playwright-cli/page.png --level AA
Workflow 2: Responsive Testing
mkdir -p .playwright-cli
for size in "375x667" "768x1024" "1280x720" "1920x1080"; do
IFS='x' read -r width height <<< "$size"
playwright-cli open http://localhost:8787
playwright-cli resize $width $height
playwright-cli screenshot --filename=.playwright-cli/screenshot-${width}x${height}.png
playwright-cli close
done
Workflow 3: Authentication + Multi-Page Audit
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787/login
playwright-cli screenshot --filename=.playwright-cli/1-login.png
playwright-cli fill e1 "tys203831@gmail.com"
playwright-cli fill e2 "&Test1234"
playwright-cli click e3
playwright-cli wait-for-load-state networkidle
playwright-cli screenshot --filename=.playwright-cli/2-dashboard.png
playwright-cli goto http://localhost:8787/settings
playwright-cli screenshot --filename=.playwright-cli/3-settings.png
playwright-cli goto http://localhost:8787/profile
playwright-cli screenshot --filename=.playwright-cli/4-profile.png
playwright-cli state-save .playwright-cli/auth-session.json
playwright-cli close
Workflow 4: Lighthouse + Accessibility Audit
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli snapshot --filename=.playwright-cli/before-audit.yaml
playwright-cli screenshot --filename=.playwright-cli/page-for-audit.png
playwright-cli run-code "async page => {
return {
url: page.url(),
title: await page.title(),
headings: await page.evaluate(() =>
document.querySelectorAll('h1,h2,h3,h4,h5,h6').length
),
buttons: await page.evaluate(() =>
document.querySelectorAll('button').length
),
forms: await page.evaluate(() =>
document.querySelectorAll('form').length
),
images: await page.evaluate(() =>
document.querySelectorAll('img').length
)
};
}"
playwright-cli close
/design-eval:audit-accessibility --imageSource .playwright-cli/page-for-audit.png --level AA
Element References
When you run playwright-cli snapshot, you get element references (e.g., e1, e2, e3). Use these in commands:
playwright-cli snapshot
playwright-cli fill e1 "email@example.com"
playwright-cli fill e2 "password"
playwright-cli click e3
Best Practices
1. Always Get Snapshot First
playwright-cli open http://localhost:8787
playwright-cli snapshot
2. Wait for Navigation
playwright-cli click e3
playwright-cli wait-for-load-state networkidle
playwright-cli screenshot
3. Use Consistent Filenames
playwright-cli screenshot --filename=1-login.png
playwright-cli screenshot --filename=2-dashboard.png
playwright-cli screenshot --filename=3-settings.png
4. Save Session State
playwright-cli state-save auth-session.json
playwright-cli open http://localhost:8787 --profile=/path/to/profile
playwright-cli state-load auth-session.json
5. Disable Animations for Consistent Captures
playwright-cli run-code "async page => {
await page.addStyleTag({
content: '* { animation: none !important; transition: none !important; }'
});
}"
playwright-cli screenshot --filename=no-animations.png
Integration with Design Eval
Feed Screenshots to Accessibility Audit
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli screenshot --filename=.playwright-cli/page.png
playwright-cli close
/design-eval:audit-accessibility --imageSource .playwright-cli/page.png --level AA --wcag-version 2.1
Feed Screenshots to Visual Consistency Check
mkdir -p .playwright-cli
playwright-cli open http://localhost:8787
playwright-cli resize 1280 720
playwright-cli screenshot --filename=.playwright-cli/desktop.png
playwright-cli close
/design-eval:audit-visual-consistency --imageSource .playwright-cli/desktop.png
Troubleshooting
Element not found in snapshot
playwright-cli snapshot
playwright-cli goto http://localhost:8787/new-page
playwright-cli snapshot
Screenshot is blank
playwright-cli wait-for-load-state networkidle
playwright-cli screenshot
Form submission not working
playwright-cli snapshot
playwright-cli run-code "async page => {
return await page.isEnabled('button[type=\"submit\"]');
}"
Session state not persisting
playwright-cli state-save my-session.json
ls -la my-session.json
playwright-cli open http://localhost:8787
playwright-cli state-load my-session.json
Reference Materials