Install
scripts/with_server.py --helpWho it is for
Use webapp-testing when you need Playwright to interact with a local web app and test it. It supports verifying frontend behavior, debugging interface actions, capturing browser screenshots, and reading browser logs. The target is a local app, not an unnamed remote-site scan.
A better fit is being ready to write native Python Playwright scripts and to manage server lifecycle with helper scripts. The source material does not give an agent-product list or an installer; do not invent a repository path. The official description page is
https://raw.githubusercontent.com/anthropics/skills/main/skills/webapp-testing/SKILL.md
First attempt in 3 minutes
The first recommended path is to inspect helper-script usage, not to open a browser. The source material names scripts/with_server.py as the piece that manages server lifecycle (multiple servers supported) and requires: Always run scripts with --help first.
Prerequisite: the current environment can run that helper. Low-risk first move:
scripts/with_server.py --help
Success signal: usage is printed and the server has not been started. This is read-only help. Do not read the helper source first to guess flags — the summary says --help first, not reading the source first.
If the help is understandable and you confirm you will test a local app, then write the Playwright script. You must use sync_playwright and start chromium headless: browser = p.chromium.launch(headless=True). Starting a server and opening a page will change the environment and may write logs; confirm the target is your local app before running. The summary says to test against localhost after the helper starts, but the excerpt does not write a port number, so do not invent an address.
Usage cases
Case 1: Use the helper with a local server for a read-only look. --help first; call scripts/with_server.py only after you confirm the flags. In the script, open headless chromium with sync_playwright. The done criterion is that the browser started in headless mode and you have not yet done a destructive action on the page. The source material supports screenshots and reading logs; those two are relatively reversible. Confirm the screenshot write path before writing a file.
Case 2: For a dynamic app, reconnoiter first, then act. The order is: navigate and wait for networkidle; take a screenshot or inspect the DOM; identify selectors from the rendered result; then act with the discovered selectors. The source material is explicit: on a dynamic app, do not inspect the DOM before networkidle; the correct step is to wait for page.wait_for_load_state('networkidle') and only then inspect. The done criterion is that you can point to the wait happening before the inspection. Do not click an unconfirmed selector before the network is idle.
Boundaries
This covers only Playwright tests of a local web app. chromium is always headless. The helper starts with --help. A dynamic app must reach networkidle before you look at the DOM.
Do not invent an installer, a repository path, or a localhost port that was never written. The source material does not give a client list and does not say how to use this on a non-local site. Anything beyond these stated helper, headless launch, and recon order is outside this guide.