Playwright Testing
chongdashu/vibejam-starter-pack
Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.
Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.
$ npx skills add petrkindlmann/qa-skills --skill agentic-browser-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install petrkindlmann/qa-skills agentic-browser-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/petrkindlmann/qa-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/agentic-browser-testing .claude/skills/agentic-browser-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 "agentic-browser-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-testing into .claude/skills/agentic-browser-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-browser-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/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-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 petrkindlmann/qa-skills --skill agentic-browser-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install petrkindlmann/qa-skills agentic-browser-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/agentic-browser-testing .agents/skills/agentic-browser-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 "agentic-browser-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-testing into .agents/skills/agentic-browser-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-browser-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 petrkindlmann/qa-skills --skill agentic-browser-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install petrkindlmann/qa-skills agentic-browser-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/agentic-browser-testing .cursor/skills/agentic-browser-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 "agentic-browser-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-testing into .cursor/skills/agentic-browser-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-browser-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/petrkindlmann/qa-skills.git --path skills/agentic-browser-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 petrkindlmann/qa-skills --skill agentic-browser-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install petrkindlmann/qa-skills agentic-browser-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/agentic-browser-testing .gemini/skills/agentic-browser-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 "agentic-browser-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-testing into .gemini/skills/agentic-browser-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-browser-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 petrkindlmann/qa-skills agentic-browser-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 petrkindlmann/qa-skills --skill agentic-browser-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/agentic-browser-testing .github/skills/agentic-browser-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 "agentic-browser-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-testing into .github/skills/agentic-browser-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-browser-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 petrkindlmann/qa-skills --skill agentic-browser-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 petrkindlmann/qa-skills agentic-browser-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/agentic-browser-testing .opencode/skills/agentic-browser-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 "agentic-browser-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/agentic-browser-testing into .opencode/skills/agentic-browser-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-browser-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.
agentic-browser-testingGoal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.
Agentic Browser Testing is an agent skill from petrkindlmann/qa-skills. Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script. Covers when intent-driven beats scripted, making agent runs deterministic (pinned model, temperature 0, seeded data, bounded steps, explicit success assertion, snapshot-not-pixel), cost/latency control, the accessibility-tree-first interaction model, CI gating, and graduating a stable run into a scripted Playwright…
Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/graduation-and-ci.md` and `references/setup.md`).
It sits in Testing & QA, covering Browser testing, End-to-end testing and QA and bug reports. It works with Playwright and Model Context Protocol. The repository describes itself as: 50 QA and test-automation skills for Claude Code, Codex, Cursor, and any Agent Skills Standard runtime. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b3bb61b. 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.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, 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.
Agentic Browser Testing loads about 4.5k tokens when it runs, and up to ~7k if it reads all its reference files. Until then it costs about 249 tokens; SKILL.md has 2,312 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); files beside SKILL.md are not scanned.
The full file from petrkindlmann/qa-skills at commit b3bb61b, republished under its MIT licence (© petrkindlmann). 2,312 words, ~4,534 tokens.
.claude/skills/agentic-browser-testing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.<objective>
A scripted Playwright test breaks the moment a button moves or a class renames; writing one
for a dashboard that changes weekly is a maintenance treadmill. This skill stands up a
goal-driven browser agent instead: it reads a natural-language goal, explores the app via the
accessibility tree (Playwright MCP `browser_snapshot`), and asserts the outcome against an
explicit oracle. The failure mode it prevents is the one that makes teams distrust agents — an
agent that reports "success" while stuck on the login page because nothing forced it to prove
where it landed. You leave with a deterministic, CI-gated agent run and a graduation path to a
durable scripted test once the flow stabilizes.
</objective>
| Situation | Go to |
|---|---|
| Stand up a goal-driven run from scratch | Discovery + references/setup.md |
| Decide agentic vs scripted for a given flow | Fit: Intent-Driven vs Scripted |
| Agent passes one run, fails the next | Determinism |
| "How does it click without screenshots?" | Interaction Model |
| Runs are slow / burning tokens | Cost and Latency |
| Agent reports false success | Success Assertion (the Oracle) |
| Flow is stable — make it permanent | Graduation → references/graduation-and-ci.md |
| Block a merge on the goal | CI Gating → references/graduation-and-ci.md |
| Canvas / no accessibility tree | Canvas Fallback → references/graduation-and-ci.md |
First, check .agents/qa-project-context.md in the project root and skip anything it already
answers (stack, environments, seed/reset tooling, model access).
/dashboard URL, an
order number — plus a forbidden state. "No error" is not an oracle.Intent, not instructions — but only where churn earns it. The agent reads a goal and finds its own path through the accessibility tree, so it survives a moved button or renamed class that would break a selector. That resilience costs 2-5x the time and money of a scripted run, so spend it on fast-changing UI and hard-to-locate flows, not on stable critical paths.
An agent run is untrustworthy until it is deterministic. Same goal, same seeded app must produce the same verdict. That requires temperature 0, a pinned model id, seeded data with a reset, a bounded step budget, and an explicit pass/fail assertion. Without these you have a coin flip, not a test.
The oracle lives outside the agent. Never let the LLM self-grade "looks good." Success
is a checkable assertion against the final browser_snapshot — specific expected text, a
URL, AND a forbidden-state negative check — evaluated by your harness, not the model.
Accessibility tree first, pixels last. browser_snapshot returns roles, refs, and
accessible names (~200-400 tokens) and is deterministic and cheap. Screenshots, pixel
coordinates, vision, and OCR are a scoped last resort for canvas only, never the default.
Graduation is the goal, not perpetual agent runs. Once a flow is stable, promote the
run to a durable scripted tests/*.spec.ts with role-based locators. An agent that has
been green for two weeks should become a fast, free regression test — keep the agent for
exploration, not for guarding a settled path.
The decision is per-flow, not per-project. Run risk-based-testing first if you need the
risk map; this table is the routing rule once you have it.
| Flow characteristic | Use | Why |
|---|---|---|
| Stable, high-frequency critical path (login, payment) | Scripted + pinned (playwright-automation) | Runs every PR; must be fast, free, and deterministic. No upside to re-exploring it. |
| Fast-changing / experimental UI (a dashboard that churns weekly, a redesign in flight) | Agentic / intent-driven | Selectors would break constantly; a goal survives layout churn. |
| Hard-to-locate flow you can't reliably select | Agentic | The agent finds the control by role/name instead of you reverse-engineering a selector. |
| Exploratory smoke / "does the happy path still work at all" | Agentic | One NL goal covers a lot of ground without a maintained script. |
| Anything in CI that must never falsely pass | Scripted, OR agentic with a hard oracle | Non-determinism is a false-pass risk you must actively cap. |
The rule, stated plainly: keep stable critical paths scripted and pinned; point intent-driven agents at fast-changing UI and exploratory smoke. Do not move everything to the agent — it is slower, costlier, and non-deterministic, and not every test should be agentic.
Playwright MCP is not computer-use with screenshots and pixel coordinates. It is accessibility-tree-first:
browser_navigate to the seeded entry URL.browser_snapshot returns the accessibility tree — each interactive element as a
role, a stable ref, and its accessible name (from ARIA/labels). ~200-400 tokens.ref and calls browser_click or browser_type.browser_wait_for waits on text appearing/disappearing — never a fixed sleep.browser_snapshot after the DOM changes; assert against that tree.Why not screenshots: the snapshot is token-efficient (thousands of tokens cheaper than an
image), deterministic (text refs, not fuzzy pixel matching), and needs no vision model or
OCR. Feeding screenshots as the primary input makes the run slower, pricier, and flakier.
browser_take_screenshot is for human evidence only, never as the assertion input.
See references/setup.md for the MCP registration, the full tool table, and the goal prompt.
A run that passes once and fails the next with no app change is not yet a test. The fix is never "just retry" or bumping temperature for "smarter" exploration — that adds variance. Pin the variables instead:
| Lever | Setting |
|---|---|
| Model | Pinned model id (e.g. claude-haiku-4-5-20251001), never latest |
| Sampling | temperature 0 — no creative wandering in CI |
| Data | Seeded fixture + reset/seed the database before every run |
| Scope | Bounded step budget (maxSteps), e.g. 18 — exceeding it FAILS, never auto-retries |
| Oracle | Explicit pass/fail verdict asserted against the snapshot |
| Evidence | Assert on the accessibility tree, never a screenshot diff |
Avoid: temperature: 0.7 or 1 for exploration, retry-until-pass loops,
waitForTimeout sleeps, and screenshot-based assertions. Each one hides flakiness rather than
removing it. Full harness config in references/setup.md.
This is the sharpest failure mode: the agent reports success while stuck on the login page, because "page loaded / no error / looks good" was accepted as success and the LLM was allowed to self-grade. Force an explicit oracle the harness checks — never the agent.
For the goal "sign in as an existing user and confirm the dashboard shows the right account name":
SUCCESS (all must hold — assert against the final browser_snapshot):
- URL matches /dashboard
- Snapshot contains the specific expected account name text, e.g. "Acme Corp — Jane R."
NEGATIVE / forbidden state (fail fast if any is true):
- Still on a URL matching /login → FAIL
- Snapshot contains role="alert" with "invalid credentials" → FAIL
VERDICT: harness emits {"passed": true|false}; the LLM does not decide.The positive checks (specific account name + /dashboard URL) prove where it landed; the
negative check (must NOT be on the login page) is what kills the false pass. "No error,"
"didn't crash," "screenshot looks correct," and "trust the agent" are not success criteria.
Agent runs are 2-5x slower and pricier than scripted tests — a step is an LLM round-trip, the dominant cost. Cut spend without losing coverage by going smaller, not bigger:
maxSteps low and enforced; fewer round-trips, less drift.Backwards moves to reject: "use a bigger model / Opus 4.8 for every step," "raise the step
limit," "screenshot every step," and running with no budget at all. See references/setup.md.
Promote a stabilized goal into a durable scripted test, and gate merges on the verdict. Both
are detailed in references/graduation-and-ci.md; the essentials:
npx playwright init-agents --loop=claude. The planner writes a
Markdown test plan to specs/<flow>.md; the generator turns it into tests/<flow>.spec.ts
with role-based locators (getByRole, getByLabel, getByText) verified against the live
DOM; the healer repairs broken locators. This is the promotion path — not "keep running it
as an agent," not recorded clicks, not page.locator('xpath=...'), not data-testid-only.{"passed": true|false} in result.json); the GitHub Actions job parses the boolean and
exit 1s on false. State is seeded/ephemeral and reset per run, with a step budget and a
timeout cap. Never continue-on-error: true, never "always exit 0," never a prose verdict a
human reads.--caps=vision to unlock browser_mouse_click_xy for that flow only.
browser_snapshot will not work on a raw canvas, but don't make coordinates the default and
don't abandon agentic testing.Converting an 80-line script that re-types login and walks 6 hardcoded steps into a single NL goal with an explicit success assertion is a real win for a churning flow — but state the downsides honestly:
Reject the over-promise: it is not "strictly better with no downsides," do not "migrate everything," and never drop the assertions to make it pass.
"Browser test" pattern-matches to codegen, so the default is page.goto / page.locator /
await expect(page...) / hunting data-testid. That misses the entire point. A goal-driven
agent reads NL intent and explores via browser_snapshot — no pre-written selectors.
Over-selling the new toy. The agent is 2-5x slower and non-deterministic. Stable critical paths (login) stay scripted and pinned; intent-driven wins on fast-changing UI. Never "always use the agent" or "agents replace all scripted tests."
"Just retry" and bumping temperature for "smarter" exploration both add variance. The real levers are temperature 0, a pinned model, seeded data, a bounded step budget, and an explicit verdict.
Playwright MCP is accessibility-tree-first. Defaulting to vision, screenshots, OCR, or
mouse_click_xy is slower, costlier, and flakier. Pixels are a canvas-only last resort.
Accepting "page loaded / didn't crash / looks good" and letting the LLM self-grade is exactly why the agent reports success while stuck on login. Require specific expected text, a URL, and a forbidden-state negative check, evaluated by the harness.
Backwards. Opus 4.8 on every step and raising maxSteps raise cost and latency without buying
reliability. Smaller models, tighter budgets, caching, and tighter scope are the fix.
A goal green for two weeks on a now-stable flow should become a scripted tests/*.spec.ts via
Playwright Test Agents. "Keep running it as an agent," recording clicks, and xpath locators are
all wrong promotions.
Returning a paragraph for a human to read, or continue-on-error: true, lets a failed goal
merge. The run must exit non-zero on failure with a machine-readable boolean.
page.locator / page.goto /
data-testid in the goal) with a START seeded entry URL.browser_snapshot — not a screenshot.temperature: 0, a maxSteps budget, and a seed; no
waitForTimeout, no retry-until-pass.browser_navigate / browser_snapshot /
browser_click / browser_type / browser_wait_for; screenshots used only for evidence.result.json with {"passed": true|false} and exit 1s on false; the CI
job gates the merge on the boolean (no continue-on-error, no always exit 0).init-agents, generate
tests/<flow>.spec.ts with getByRole locators").--caps=vision +
browser_mouse_click_xy) is scoped to that flow only, or the canvas is instrumented with ARIA.references/).mcp.json), the snapshot tool table, the
natural-language goal prompt with success/negative assertions, the determinism harness
config (pinned model, temperature 0, maxSteps, seed, prompt cache), and cost/latency levers.specs/*.md,
generator → tests/*.spec.ts with role-based locators, healer), the GitHub Actions gating
workflow with a machine-readable boolean verdict, and the canvas --caps=vision fallback.© petrkindlmann, MIT. 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 2 other files (references) in skills/agentic-browser-testing of petrkindlmann/qa-skills.
Open the folder on GitHubat commit b3bb61b
Agentic Browser 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 |
|---|---|---|---|---|---|---|
| Agentic Browser Testing this skillpetrkindlmann/qa-skills | 163 | — | ~4.5k | Automated safety check: Pass | MIT | |
| Playwright Testingchongdashu/vibejam-starter-pack | 149 | — | ~2.2k | Automated safety check: Pass | None | |
| Glance TestDebugBase/glance | 156 | — | ~827 | Automated safety check: Pass | MIT | |
| Windows QA EngineerCodeAlive-AI/ai-driven-development | 155 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Playwright UI TestingHack23/cia | 239 | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| Quality Engineering Playwright CLIHoangNguyen0403/agent-skills-standard | 570 | — | ~1.2k | Automated safety check: Pass | MIT |
chongdashu/vibejam-starter-pack
Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.
DebugBase/glance
Run E2E browser tests on any web application using Glance MCP.
CodeAlive-AI/ai-driven-development
A skill your agent uses when testing Windows 11 desktop apps (WinForms/WPF/UWP) via UFO UIA/Win32 automation MCP.
Hack23/cia
Playwright browser automation, visual regression testing, accessibility testing, and E2E workflow validation for CIA platform
HoangNguyen0403/agent-skills-standard
Standardizes token-efficient browser automation via playwright-cli, with Playwright MCP as the fallback driver.
kid-sid/claude-spellbook
A skill your agent uses when writing Playwright E2E tests for critical user journeys, setting up post-deployment smoke tests, debugging flaky browser automation, or implementing BDD feature files…
petrkindlmann/qa-skills
Test for WCAG 2.2 AA compliance with axe-core + Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance mapping (ADA, EAA, Section 508).
petrkindlmann/qa-skills
Use AI to write NEW test code from specs, PRDs, user stories, code diffs, bug reports, or OpenAPI specs.
petrkindlmann/qa-skills
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
petrkindlmann/qa-skills
Design CI/CD pipelines that run test suites. An agent skill from petrkindlmann/qa-skills.
petrkindlmann/qa-skills
Test for regulatory compliance: GDPR/CMP consent verification, Google Consent Mode v2, Global Privacy Control (GPC), CCPA/US state opt-out, EU AI Act Article 50 transparency, Better Ads Standards…
petrkindlmann/qa-skills
Implement consumer-driven contract testing with Pact-JS (v16).
Works with
Categories
Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script. Agentic Browser Testing is an agent skill from petrkindlmann/qa-skills. Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.
Agentic Browser Testing fits situations like: : agentic browser test; goal-driven browser test; let an agent explore the app; natural-language E2E.
Run `npx skills add petrkindlmann/qa-skills --skill agentic-browser-testing -a claude-code`. Or copy the skill folder (skills/agentic-browser-testing in petrkindlmann/qa-skills) into .claude/skills/agentic-browser-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add petrkindlmann/qa-skills --skill agentic-browser-testing -a codex`. Or copy the skill folder (skills/agentic-browser-testing in petrkindlmann/qa-skills) into .agents/skills/agentic-browser-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 petrkindlmann/qa-skills --skill agentic-browser-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/agentic-browser-testing, .gemini/skills/agentic-browser-testing, .github/skills/agentic-browser-testing and .opencode/skills/agentic-browser-testing in your project.
Going by SKILL.md and its folder, Agentic Browser Testing needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, 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. Review the folder before installing.
Agentic Browser Testing is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Agentic Browser Testing: Playwright Testing (chongdashu/vibejam-starter-pack, 149 stars), Glance Test (DebugBase/glance, 156 stars), Windows QA Engineer (CodeAlive-AI/ai-driven-development, 155 stars) and Playwright UI Testing (Hack23/cia, 239 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
petrkindlmann (a GitHub user) maintains it in petrkindlmann/qa-skills, which has 163 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on June 10, 2026.
Source: petrkindlmann/qa-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.