Webapp Testing
Toolkit for interacting with and testing local web applications using Playwright.
Content
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
Example: Using with_server.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.wait_for_load_state('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--helpto see usage, then invoke directly. - -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()orpage.wait_for_timeout()
Reference Files
- -examples/ - Examples showing common patterns:
- -
element_discovery.py- Discovering buttons, links, and inputs on a page - -
static_html_automation.py- Using file:// URLs for local HTML - -
console_logging.py- Capturing console logs during automation
FAQ
Discussion
Loading comments...