| name | playwright-browser |
| description | Browser automation and E2E testing via local Playwright Docker container |
| category | testing |
| triggers | browser, automation, E2E, screenshot, navigate, playwright |
| docker_required | true |
| ruby_required | true |
Playwright Browser Automation Skill
Purpose
Provides browser automation capabilities through a local Playwright Docker container, eliminating the need for remote MCP server connections. Enables web scraping, E2E testing, screenshot capture, and browser interaction automation.
Capabilities
- Navigation: Load URLs with configurable wait conditions
- Screenshots: Capture full-page or viewport screenshots
- Interaction: Click, fill forms, press keys
- Evaluation: Execute JavaScript in page context
- Testing: End-to-end test automation
Requirements
Docker
- Docker Desktop installed and running
agent-networkDocker network created- Playwright container running
Ruby
- Ruby ≥2.7
- Gems:
websocket-client-simple,json
Setup
# Start Playwright container
cd ~/.claude/skills/playwright-browser/docker
docker-compose up -d
# Verify container is running
docker ps | grep playwright-server
# Check health
curl http://localhost:3000/health
Usage
Navigation
# Navigate to URL
~/.claude/skills/playwright-browser/scripts/navigate.rb "https://example.com"
Screenshots
# Capture screenshot
~/.claude/skills/playwright-browser/scripts/screenshot.rb "https://example.com" /tmp/screenshot.png
# Full-page screenshot
~/.claude/skills/playwright-browser/scripts/screenshot.rb "https://example.com" /tmp/screenshot.png --full-page
JavaScript Evaluation
# Execute JavaScript
~/.claude/skills/playwright-browser/scripts/evaluate.rb "document.title"
# Get page data
~/.claude/skills/playwright-browser/scripts/evaluate.rb "JSON.stringify({title: document.title, url: location.href})"
Docker Management
Start Container
~/.claude/skills/playwright-browser/scripts/start.sh
Stop Container
~/.claude/skills/playwright-browser/scripts/stop.sh
Restart Container
~/.claude/skills/playwright-browser/scripts/restart.sh
Check Status
~/.claude/skills/playwright-browser/scripts/status.sh
Troubleshooting
Container won't start
Symptom: docker-compose up -d fails
Solutions:
- Check Docker Desktop is running
- Verify network exists:
docker network ls | grep agent-network - Check logs:
docker-compose logs - Try recreating:
docker-compose down && docker-compose up -d
Connection refused
Symptom: WebSocket connection fails
Solutions:
- Verify container is running:
docker ps | grep playwright - Check health:
curl http://localhost:3000/health - Check logs:
docker logs playwright-server - Restart container:
docker-compose restart
Slow performance
Symptom: Operations take >5 seconds
Solutions:
- Check resource allocation in Docker Desktop settings
- Increase memory limit in docker-compose.yml
- Verify no other heavy containers running
- Check system resources:
docker stats
Ruby gem errors
Symptom: LoadError for websocket gem
Solutions:
gem install websocket-client-simple
gem install json
Performance Notes
- Container startup: ~20-30 seconds
- API response time: <500ms typical
- Memory usage: ~500MB-1GB
- Suitable for development and light automation
Advanced Configuration
Custom Playwright version
Edit docker-compose.yml:
image: mcr.microsoft.com/playwright:v1.41.0-jammy
Resource limits
Edit docker-compose.yml deploy section:
deploy:
resources:
limits:
memory: 4G
cpus: '4.0'
See Also
- Chrome DevTools skill for debugging capabilities
- Original research:
~/.claude/claudedocs/research_mcp_to_agent_skill_conversion_20251116.md