Webapp Testing skill for Claude: test your local web app with Playwright
Anthropic's agent skill that makes Claude write and run Playwright scripts to test your local web app in a headless browser.
- Installs
- 195K
- on skills.sh
- Stars
- 186.4K
- on GitHub
- Files
- 5
- besides SKILL.md
- Updated
- Oct 2026
- last repo commit
webapp-testing is Anthropic's agent skill for Claude. It makes Claude write Python Playwright scripts that open your local web app in a headless Chromium browser, click through it, take screenshots and read console logs. It also bundles one helper that starts your dev servers before a test and stops them after. You need Python and Playwright installed first, and the helper runs your server commands through the shell.
Good for
- Developers who want Claude to click through their local app and report what broke
- Anyone debugging a UI bug who wants screenshots and browser console logs
- Teams that want quick smoke tests on a front end without writing the scripts by hand
- Claude Code users who already run a dev server such as Vite or a Node backend
Install webapp-testing
Claude Code
- 1
Copy this prompt.
Install the webapp-testing skill in Claude Code. Run this command: /plugin marketplace add anthropics/skills /plugin install example-skills@anthropic-agent-skills Then check that it loaded and tell me how to use it.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Python 3.8 or newer.
The skill itself does not install Playwright or a browser. The two Playwright steps come from the Playwright for Python docs. If you skip them, Claude can usually install them when the first script fails with an import error.
From the project README. Source.
What's in the skill
When it loads
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.
Sections in SKILL.md
- Decision Tree: Choosing Your Approach
- Example: Using with_server.py
- Reconnaissance-Then-Action Pattern
- Common Pitfall
- Best Practices
- Reference Files
Key facts
- Author
- Anthropic
- Installs on skills.sh
- 194,845 as of 2026-11-01
- What is inside
- 6 files: 1 helper script (with_server.py), 3 example scripts, LICENSE.txt and SKILL.md
- Last change to this skill
- 2026-04-20 (license line); last content change 2025-12-01
What it includes
Picks static HTML, running server or server not running
Claude first checks whether your page is plain HTML or a dynamic app, and whether the server is already running. That choice decides which path it takes.
Read ·
Decision treeLooks at the rendered page before it clicks anything
Claude opens the page, waits until it finishes loading, takes a screenshot or reads the page, picks selectors from what it sees, then runs the actions.
Try: “Use webapp-testing to open localhost:5173, find the buttons on the page and click Sign in.”
Runs code ·
Reconnaissance, then actionStarts your dev servers, runs the test, stops the servers
Starts one or more servers, waits until their ports answer, runs your test command and shuts the servers down. Claude runs it with --help first and does not read the source.
Try: “Use webapp-testing. Start the backend and frontend, then run the checkout test.”
Runs code ·
scripts/with_server.pyLists the buttons, links and inputs on a page
Opens a page, prints the buttons, the first five links and the form fields, and saves a screenshot.
Files ·
examples/element_discovery.pyRecords browser console messages while you click through
Loads the page at 1920x1080, clicks a link and saves every console message to a log file.
Write ·
examples/console_logging.pyFills and submits a local HTML file
Opens an HTML file from disk, takes a screenshot, fills in the form, submits it and takes another screenshot.
Write ·
examples/static_html_automation.pyWaits for the page scripts to finish before reading it
The skill's one hard rule. On a dynamic app Claude must wait for the page to settle before reading it, or it sees an empty shell. The browser always runs headless.
Read ·
Wait for networkidle
From the official docs
Permissions
Medium risk
Claude runs scripts on your machine, and the server helper passes your commands to the shell, so a careless command can cause real damage. Use it on projects you trust, with test data, and read the commands Claude proposes before you approve them.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
The server helper runs commands through a shell
with_server.py passes your server command to the shell, and three issues report command injection (one closed as a duplicate). Only give it commands you wrote, and read what Claude proposes before you approve it. github.com
Dev servers can be left running or hang
Open bug reports say it can leave node or vite processes running, hang on servers that print a lot, and report a pass when the port was already taken. None of the fix pull requests are merged, so check for stray processes and stop them yourself. github.com
Page content goes into the conversation
Claude reads the page text, screenshots and console logs. A page with hostile text could try to steer Claude, so point it at your own app, not at unknown sites. skills.sh
No timeout on the test command
A test that never ends keeps running until you stop it. Watch the first runs. github.com
The Claude Code plugin installs the whole example set
The plugin route loads every skill in the example-skills set, not only this one. Use the skills command in the install box if you want just this skill. github.com
Security advisories
No published security advisories as of Nov 2, 2026.
Technical details
| Turning on read-only | No read-only mode. The scripts can click buttons and submit forms in your app, so use a dev database and test accounts. |
|---|---|
| Talks to | Playwright browser download at setup. The test scripts open localhost or file:// pages. Your AI provider receives page content, screenshots and console logs that Claude reads |
| Sign-in and keys | No account or key. Any login the app needs is whatever you type into the test. |
| Data retention | No telemetry. The skill is plain files and scripts; screenshots stay where the script saves them. |
| Scopes |
|
Examples
Check that a running Vite app still works after a change
Use the webapp-testing skill. My app is running on localhost:5173. Open it, click through the login and dashboard pages, and tell me what breaks.
Claude opens the page, waits for it to finish loading, takes a screenshot, picks selectors from what rendered and runs the clicks.
Start a front end and back end together and test them
Use webapp-testing. Start the backend in ./backend on port 3000 and the frontend in ./frontend on port 5173, then submit the signup form and check for errors.
Claude uses the bundled server helper with two servers, runs the test and stops both servers afterward.
Collect browser console errors
Use webapp-testing to load http://localhost:5173, click Dashboard and save every console message to a log file.
Claude adapts the console logging example and writes the messages to a file you name.
Try a static HTML form
Use webapp-testing on ./signup.html. Fill in name and email, submit, and screenshot before and after.
Claude reads the HTML for selectors and runs a script against the file, saving two screenshots.
Questions
What is the webapp-testing skill?
An agent skill from Anthropic, in the anthropics/skills repo, that tells Claude how to test a local web app with Playwright. Claude writes Python scripts, runs them in a headless Chromium browser and reports what it sees.
How do I install webapp-testing?
Use the install box at the top of this page. The skill does not install Playwright, so also run the two Playwright setup commands shown there, or let Claude do it when it hits an import error. Python 3.8 or newer is required.
Does webapp-testing work in Claude.ai?
Yes, as an example skill. Anthropic's help center lists skills on Free, Pro, Max, Ultra, Team and Enterprise plans, with code execution turned on; the repo README still says paid plans. Enable it under Customize > Skills. Anthropic does not say whether that sandbox can launch a browser or reach a server on your own machine, so Claude Code is the safer choice for local apps.
Does webapp-testing work in Codex or Cursor?
Anthropic documents it for Claude only. It is plain files, so other tools that read skill folders may load it, but nothing from Anthropic says so. GitHub's awesome-copilot has a different skill with the same name that uses Node.
Is webapp-testing safe?
Mostly, if you use it on your own projects. Claude runs scripts and a helper that passes server commands to the shell. On skills.sh, Gen Agent Trust Hub passes it, Socket warns at low risk and Snyk warns at medium risk, all dated Sep 14, 2026. No GitHub security advisories are listed.
Why does the script fail to save a file to /mnt/user-data/outputs?
That folder only exists in Claude.ai's sandbox. Two example scripts write there, so on your own machine change the path to a folder you have, such as /tmp, or ask Claude to do it.
Why did my test pass even though the app was down?
The helper checks that something is listening on the port, not that it is your app. If an old server already uses that port, the test runs against it. Stop the old process or pick a free port. A fix is open but not merged.
Why is a dev server still running after the test?
The helper stops the servers it started, but open reports say child processes such as vite can survive. Check for leftover node processes and stop them yourself.
webapp-testing vs Playwright MCP?
webapp-testing has Claude write and run one-off Python scripts, so there is no server to connect and the steps stay in files. The Playwright MCP server gives Claude browser tools it calls one step at a time. Pick the skill for repeatable test scripts and the MCP server for exploring a page live.
webapp-testing vs playwright-cli or agent-browser?
Both are command line browsers Claude drives step by step. playwright-cli and agent-browser suit exploring a site live. webapp-testing is better when you want a script you can keep and rerun, plus the helper that starts your dev servers.
Information
updated Nov 2, 2026
- Repository
- anthropics/skills
- Folder
skills/webapp-testing
Sources
Docs, issue trackers and discussions this page is built from.
Show all 28Hide
- anthropics/skills README · github.com
- Using skills in Claude · support.claude.com
- skills.sh listing · skills.sh
- Playwright for Python · playwright.dev
- Claude Code skills · code.claude.com
- webapp-testing SKILL.md · github.com
- with_server.py · github.com
- anthropics/skills · github.com
- LICENSE.txt · github.com
- marketplace.json · github.com
- Folder history · github.com
- Playwright for Python · playwright.dev
- element_discovery.py · github.com
- console_logging.py · github.com
- static_html_automation.py · github.com
- Output path pull request · github.com
- Fix for false pass on occupied port (open) · github.com
- Fix for orphaned dev servers (open) · github.com
- Snyk audit: Warn, medium risk, Sep 14, 2026 · skills.sh
- awesome-copilot webapp-testing (different skill) · github.com
- Gen Agent Trust Hub audit: Pass, Sep 14, 2026 · skills.sh
- Socket audit: Warn, low risk, Sep 14, 2026 · skills.sh
- Command injection report (open) · github.com
- Command injection report (open) · github.com
- Command injection report (closed as duplicate) · github.com
- Fix for missing timeout (open) · github.com
- Plugin install loads all repo skills · github.com
- GitHub security advisories: none listed on 2026-11-02 · github.com