IMPORTANT - Path Resolution:
This skill can be installed in different locations (plugin system, manual installation, global, or project-specific). Before executing any commands, determine the skill directory based on where you loaded this SKILL.md file, and use that path in all commands below. Replace $SKILL_DIR with the actual discovered path.
Common installation paths:
- •Plugin system:
~/.claude/plugins/marketplaces/playwright-skill/skills/playwright-skill - •Manual global:
~/.claude/skills/playwright-skill - •Project-specific:
<project>/.claude/skills/playwright-skill
Playwright Browser Automation
General-purpose browser automation skill. I'll write custom Playwright code for any automation task you request and execute it via the universal executor.
CRITICAL WORKFLOW - Follow these steps in order:
- •
Auto-detect dev servers - For localhost testing, ALWAYS run server detection FIRST:
bashcd $SKILL_DIR && node -e "require('./lib/helpers').detectDevServers().then(servers => console.log(JSON.stringify(servers)))"- •If 1 server found: Use it automatically, inform user
- •If multiple servers found: Ask user which one to test
- •If no servers found: Ask for URL or offer to help start dev server
- •
Write scripts to /tmp - NEVER write test files to skill directory; always use
/tmp/playwright-test-*.js - •
Use visible browser by default - Always use
headless: falseunless user specifically requests headless mode - •
Parameterize URLs - Always make URLs configurable via environment variable or constant at top of script
How It Works
- •You describe what you want to test/automate
- •I auto-detect running dev servers (or ask for URL if testing external site)
- •I write custom Playwright code in
/tmp/playwright-test-*.js(won't clutter your project) - •I execute it via:
cd $SKILL_DIR && node run.js /tmp/playwright-test-*.js - •Results displayed in real-time, browser window visible for debugging
- •Test files auto-cleaned from /tmp by your OS
Setup (First Time)
cd $SKILL_DIR npm run setup
This installs Playwright and Chromium browser. Only needed once.
Execution Pattern
Step 1: Detect dev servers (for localhost testing)
cd $SKILL_DIR && node -e "require('./lib/helpers').detectDevServers().then(s => console.log(JSON.stringify(s)))"
Step 2: Write test script to /tmp with URL parameter
// /tmp/playwright-test-page.js
const { chromium } = require('playwright');
// Parameterized URL (detected or user-provided)
const TARGET_URL = 'http://localhost:3001'; // <-- Auto-detected or from user
(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto(TARGET_URL);
console.log('Page loaded:', await page.title());
await page.screenshot({ path: '/tmp/screenshot.png', fullPage: true });
console.log('📸 Screenshot saved to /tmp/screenshot.png');
await browser.close();
})();
Step 3: Execute from skill directory
cd $SKILL_DIR && node run.js /tmp/playwright-test-page.js