About this skill
# Web Application Testing
To test local web applications, write native Python Playwright scripts.
Helper Scripts Available:
scripts/with_server.py- Manages server lifecycle (supports multiple servers)
Always run scripts with --help first to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.
Decision Tree: Choosing Your Approach
User task β Is it static HTML?
ββ Yes β Read HTML file directly to identify selectors
β ββ Success β Write Playwright script using selectors
β ββ Fails/Incomplete β Treat as dynamic (below)
β
ββ No (dynamic webapp) β Is the server already running?
ββ No β Run: python scripts/with_server.py --help
β Then use the helper + write simplified Playwright script
β
ββ Yes β Reconnaissance-then-action:
1. Navigate and wait for networkidle
2. Take screenshot or inspect DOM
3. Identify selectors from rendered state
4. Execute actions with discovered selectors
Example: Using with_server.py
To start a server, run --help first, then use the helper:
**Single serv
β¦
Use cases
- `scripts/with_server.py` - Manages server lifecycle (supports multiple servers)
- Use `sync_playwright()` for synchronous scripts
- Always close the browser when done
- Use descriptive selectors: `text=`, `role=`, CSS selectors, or IDs
- Add appropriate waits: `page.wait_for_selector()` or `page.wait_for_timeout()`
- **examples/** - Examples showing common patterns:
Installation
- Download the ZIP using the button on the right.
- Unzip the folder.
- Drop the
webapp-testing/folder inside~/.claude/skills/. - Restart Claude Code (or your Claude Desktop session) β the skill loads automatically.
# macOS / Linux
mkdir -p ~/.claude/skills
unzip claude-skill-webapp-testing.zip -d ~/.claude/skills/