RStudio Selenium to Playwright Migration
rstudio/rstudio
Converts RStudio Python Selenium electron tests into TypeScript Playwright tests, checking each against a live RStudio before counting it as migrated.
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
$ npx skills add anthropics/skills --skill webapp-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install anthropics/skills webapp-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/webapp-testing .claude/skills/webapp-testing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "webapp-testing" agent skill from https://github.com/anthropics/skills/tree/main/skills/webapp-testing into .claude/skills/webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webapp-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/anthropics/skills/tree/main/skills/webapp-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add anthropics/skills --skill webapp-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install anthropics/skills webapp-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/webapp-testing .agents/skills/webapp-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "webapp-testing" agent skill from https://github.com/anthropics/skills/tree/main/skills/webapp-testing into .agents/skills/webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webapp-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add anthropics/skills --skill webapp-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install anthropics/skills webapp-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/webapp-testing .cursor/skills/webapp-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "webapp-testing" agent skill from https://github.com/anthropics/skills/tree/main/skills/webapp-testing into .cursor/skills/webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webapp-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/anthropics/skills.git --path skills/webapp-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add anthropics/skills --skill webapp-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install anthropics/skills webapp-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/webapp-testing .gemini/skills/webapp-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "webapp-testing" agent skill from https://github.com/anthropics/skills/tree/main/skills/webapp-testing into .gemini/skills/webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webapp-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install anthropics/skills webapp-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add anthropics/skills --skill webapp-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/webapp-testing .github/skills/webapp-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "webapp-testing" agent skill from https://github.com/anthropics/skills/tree/main/skills/webapp-testing into .github/skills/webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webapp-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add anthropics/skills --skill webapp-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install anthropics/skills webapp-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/anthropics/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/webapp-testing .opencode/skills/webapp-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "webapp-testing" agent skill from https://github.com/anthropics/skills/tree/main/skills/webapp-testing into .opencode/skills/webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webapp-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
webapp-testingTests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
This toolkit has the agent write native Python Playwright scripts to exercise a web app running on your machine. A decision tree picks the approach: static HTML can be read directly for selectors, while dynamic apps need a running server, inspection of the rendered page and then actions on the selectors found there.
A helper, scripts/with_server.py, starts one or more servers (for example a backend and a frontend), waits for their ports and then runs the automation, so the script itself contains only Playwright logic. The agent is told to wait for network idle before inspecting dynamic pages, use descriptive selectors, close the browser when done, and call the helpers with --help as black boxes instead of reading their source. Example scripts show console logging, element discovery and static HTML automation.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 683bc88. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Web Application Testing loads about 966 tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 255 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from anthropics/skills at commit 683bc88, republished under its Apache-2.0 licence (© anthropics). 255 words, ~966 tokens.
.claude/skills/webapp-testing/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.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.
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 selectorsTo 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.pyMultiple 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.pyTo 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()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
❌ Don't inspect the DOM before waiting for networkidle on dynamic apps
✅ Do wait for page.wait_for_load_state('networkidle') before inspection
scripts/ can help. These scripts handle common, complex workflows reliably without cluttering the context window. Use --help to see usage, then invoke directly. sync_playwright() for synchronous scriptstext=, role=, CSS selectors, or IDspage.wait_for_selector() or page.wait_for_timeout()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© anthropics, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts) in skills/webapp-testing of anthropics/skills.
Open the folder on GitHubat commit 683bc88
We found 87 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 51 other GitHub owners. This page covers the copy in anthropics/skills, which our catalogue first saw on October 7, 2026.
…and 37 more copies not listed here.
Web Application Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Web Application Testing this skillanthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| RStudio Selenium to Playwright Migrationrstudio/rstudio | 5.1k | — | ~3.6k | Automated safety check: Pass | Custom licence | |
| Python Testingmacalbert/envilder | 138 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Webapp TestingxenitV1/Antigravity-Workflows | 130 | — | ~947 | Automated safety check: Notes | MIT | |
| Playwrightsecondsky/claude-skills | 227 | — | ~3.7k | Automated safety check: Notes | MIT | |
| Acarshub Tool Additionssdr-enthusiasts/docker-acarshub | 117 | — | ~707 | Automated safety check: Pass | GPL-3.0 |
rstudio/rstudio
Converts RStudio Python Selenium electron tests into TypeScript Playwright tests, checking each against a live RStudio before counting it as migrated.
macalbert/envilder
Mandatory testing conventions including AAA pattern, test naming, assertions, and mocks.
xenitV1/Antigravity-Workflows
Web application testing principles. An agent skill from xenitV1/Antigravity-Workflows.
secondsky/claude-skills
Browser automation and E2E testing with Playwright. An agent skill from secondsky/claude-skills.
sdr-enthusiasts/docker-acarshub
Use ONLY when working in the docker-acarshub repository AND a task may require adding a system tool, npm package, or other dependency.
ericrisco/rsc-harness
A skill your agent uses when writing or stabilizing Playwright tests that drive a real browser through multi-step journeys — durable locators, web-first assertions, storageState auth, trace/retries…
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/skills
Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.
anthropics/skills
Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.
anthropics/skills
Creates original generative art in two steps: a written algorithmic philosophy, then a p5.js sketch with seeded randomness and an interactive viewer for exploring parameters.
anthropics/skills
Creates original posters and static art as PNG or PDF by first writing a short design philosophy, then expressing it visually on a canvas.
anthropics/skills
Creates, edits and reviews Word documents: new files with docx-js, edits through the underlying XML, plus tracked changes, comments and conversions.
Works with
Categories
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs. This toolkit has the agent write native Python Playwright scripts to exercise a web app running on your machine. A decision tree picks the approach: static HTML can be read directly for selectors, while dynamic apps need a running server, inspection of the rendered page and then actions on the selectors found there.
Web Application Testing fits situations like: verifying that a frontend change works in a real browser; debugging UI behavior with screenshots and console logs; testing an app that needs both a backend and a frontend server running.
Run `npx skills add anthropics/skills --skill webapp-testing -a claude-code`. Or copy the skill folder (skills/webapp-testing in anthropics/skills) into .claude/skills/webapp-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add anthropics/skills --skill webapp-testing -a codex`. Or copy the skill folder (skills/webapp-testing in anthropics/skills) into .agents/skills/webapp-testing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add anthropics/skills --skill webapp-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/webapp-testing, .gemini/skills/webapp-testing, .github/skills/webapp-testing and .opencode/skills/webapp-testing in your project.
Going by SKILL.md and its folder, Web Application Testing needs Python for the scripts in its folder and the command-line tools its instructions call (python and npm). Our summary lists: Python with Playwright; The app's start commands, such as npm run dev.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Web Application Testing is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 966 tokens (SKILL.md is roughly 3.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Web Application Testing: RStudio Selenium to Playwright Migration (rstudio/rstudio, 5.1k stars), Python Testing (macalbert/envilder, 138 stars), Webapp Testing (xenitV1/Antigravity-Workflows, 130 stars) and Playwright (secondsky/claude-skills, 227 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
anthropics (a GitHub organization, an official publisher) maintains it in anthropics/skills, which has 179,935 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 5, 2026.
Source: anthropics/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.