webapp-testing
Test local web applications using Playwright. Use when verifying frontend functionality, debugging UI behavior, capturing browser screenshots, or viewing browser logs.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-11
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- webapp-testing
- license
- Complete terms in LICENSE.txt
- description
- Test local web applications using Playwright. Use when verifying frontend functionality, debugging UI behavior, capturing browser screenshots, or viewing browser logs.
02 资源文件 45
- 脚本examples/console_logging.py1.0 KB
- 脚本examples/element_discovery.py1.4 KB
- 脚本examples/static_html_automation.py953 B
- 许可证LICENSE.txt11.1 KB
- 参考文档references/advisor.md3.1 KB
- 参考文档references/dev-fix-bug.md14.3 KB
- 参考文档references/development.md1.2 KB
- 参考文档references/mobile-testing/component-view.md10.9 KB
- 参考文档references/mobile-testing/component-view/reference.md24.0 KB
- 参考文档references/qa-example.md5.1 KB
- 参考文档references/qa.md37.7 KB
- 参考文档references/team-libraries.md7.4 KB
- 参考文档references/template-alignment.md1.3 KB
- 参考文档references/templates/dev/core.md1.9 KB
- 参考文档references/templates/dev/extension.md1.4 KB
- 参考文档references/templates/dev/mobile.md1.4 KB
- 参考文档references/templates/fix-bug/core.md1.5 KB
- 参考文档references/templates/fix-bug/extension.md1.7 KB
- 参考文档references/templates/fix-bug/mobile.md2.1 KB
- 参考文档references/templates/qa/default.md9.2 KB
- 参考文档references/templates/qa/pr.extension.md5.3 KB
- 参考文档references/templates/qa/pr.mobile.md5.9 KB
- 脚本scripts/acceptance-cli447 B
- 脚本scripts/create-harness-runner678 B
- 脚本scripts/detect-platform2.0 KB
- 脚本scripts/find-package-symbol865 B
- 脚本scripts/init-template8.6 KB
- 脚本scripts/lint-template470 B
- 脚本scripts/list-templates5.8 KB
- 脚本scripts/prepare-sandbox4.7 KB
- 脚本scripts/resolve-harness19.2 KB
- 脚本scripts/template-command2.0 KB
- 脚本scripts/tests/acceptance-cli.test.mjs3.8 KB
- 脚本scripts/tests/find-package-symbol.test.sh2.5 KB
- 脚本scripts/tests/prepare-sandbox.test.sh38.8 KB
- 脚本scripts/tests/qa-ci-parity.test.mjs4.6 KB
- 脚本scripts/tests/qa-install.test.sh2.1 KB
- 脚本scripts/tests/resolve-harness.test.sh33.5 KB
- 脚本scripts/tests/resume-task-pin.fixture.mjs7.3 KB
- 脚本scripts/tests/resume-task-pin.test.mjs6.6 KB
- 脚本scripts/tests/resume-task-runtime.live.mjs1.4 KB
- 脚本scripts/tests/review-route.test.sh3.7 KB
- 脚本scripts/tests/shell.test.mjs466 B
- 脚本scripts/verify-harness.mjs5.6 KB
- 脚本scripts/with_server.py3.6 KB
03 SKILL.md 正文
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 server:
python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
Multiple servers (e.g., backend + frontend):
python scripts/with_server.py \
--server "cd backend && python server.py" --port 3000 \
--server "cd frontend && npm run dev" --port 5173 \
-- python your_automation.py
To create an automation script, include only Playwright logic (servers are managed automatically):
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True) # Always launch chromium in headless mode
page = browser.new_page()
page.goto('http://localhost:5173') # Server already running and ready
page.wait_for_load_state('networkidle') # CRITICAL: Wait for JS to execute
# ... your automation logic
browser.close()
Reconnaissance-Then-Action Pattern
-
Inspect rendered DOM:
page.screenshot(path='/tmp/inspect.png', full_page=True) content = page.content() page.locator('button').all() -
Identify selectors from inspection results
-
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 pagestatic_html_automation.py- Using file:// URLs for local HTMLconsole_logging.py- Capturing console logs during automation
04 同仓库更多 Skills
skill-creator
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
writing-shape
Writing, exploit: shape raw material into an article, paragraph by paragraph.
wait-what
Stop. That last message did not land: re-pitch it.
prototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
improve-codebase-architecture
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
implement
Implement a piece of work based on a spec or set of tickets.