Agent skill · software engineering · davila7
webapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Why this skill is useful
Adds executable scripts for managing server lifecycles and automating Playwright testing that aren't commonly found in public documentation.
What it needs
Requires playwright, python installed locally. About 2k tokens when loaded. Last updated 2026-08-06. 30,138 stars on the source repository.
What this skill does
Web Application Testing To test local web applications, write native Python Playwright scripts. Helper Scripts Available: scripts/withserver.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 Example: Using withserver.py To start a server, run --help first, then use the helper: Single server: Multiple servers (e.g., backend + frontend): To create an automation script, include only Playwright logic (servers are managed automatically): Reconnaissance-Then-Action Pattern 1. Inspect rendered DOM: 2. Identify selectors from inspection results 3. Execute actions using discovered selectors Common Pitfall ❌ Don't inspect the DOM before waiting for networkidle on dynamic apps ✅ Do wait for page.waitforloadstate('networkidle') before inspection Best Practices Use bundled scripts as black boxes - To accomplish a task, consider whether one of the scripts available in scripts/ can help. These scripts handle common, complex workflows reliably without cluttering the context window. Use --help to see usage, then invoke directly. Use syncplaywright() for synchronous scripts Always close the browser when done Use descriptive selectors: text=, role=, CSS selectors, or IDs Add appropriate waits: page.waitforselector() or page.waitfortimeout() Reference Files examples/ - Examples showing common patterns: elementdiscovery.py - Discovering buttons, links, and inputs on a page statichtmlautomation.py - Using file:// URLs for local HTML consolelogging.py - Capturing console logs during automation
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills davila7/webapp-testing--045ca0