browser-qa
Skill0 starsChanged 6 months agoMITView on GitHub
Drive a real browser (Playwright) to validate user flows end-to-end — click buttons, fill forms, assert on rendered output, screenshot the moment a step breaks. Use when the user says "test this flow", "run the e2e tests", "verify the signup works", "qa my app", "does the checkout work", or asks Claude to confirm a UI change actually behaves correctly in a browser. Closes the gap between "code compiles" and "user flow works".
- Installs packages
24 other projects use a version of this.
Adopted by
Most recently taken up by
- Rojios/everything-claude-codetheir own version, first seen Nov 8, 2026
- agenticluke/browser-qa-plustheir own version, first seen Nov 8, 2026
- tchivs/browser-qa-skilltheir own version, first seen Nov 8, 2026
- pankaj-mahaur/Agent-Daemontheir own version, first seen Nov 6, 2026
- angusfretwell/skillstheir own version, first seen Nov 4, 2026
- renepf/claude-skillstheir own version, first seen Oct 25, 2026
Used with
Projects with it also use opensource-pipeline, security-bounty-hunter and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
TironFoxSkillopensource-pipeline
Open-source pipeline: fork, sanitize, and package private projects for safe public release. Chains 3 agents (forker, sanitizer, packager). Triggers: '/opensource', 'open source this', 'make this public', 'prepare for open source'.
Also in 3 projects that use this
RojiosSkillsecurity-bounty-hunter
Hunt for exploitable, bounty-worthy security issues in repositories. Focuses on remotely reachable vulnerabilities that qualify for real reports instead of noisy local-only findings.
Also in 3 projects that use this
Exploration-labsSkilltoken-budget-advisor
Proactive token budget assessment and task chunking strategy. Use this skill when queries involve multiple large file uploads, requests for comprehensive multi-document analysis, complex multi-step workflows with heavy research (10+ tool calls), phrases like "complete analysis", "full audit", "thorough review", "deep dive", or tasks combining extensive research with large output artifacts. This skill helps assess token consumption risk early and recommend chunking strategies before beginning work.
Also in 3 projects that use this
ElasticSkillaccessibility
Accessibility guidance for Kibana. Use this skill when working with or reviewing EUI components, resolving a11y-related (@elastic/eui) ESLint issues, and ensuring proper use of ARIA attributes, focus management, keyboard interactions, and accessible naming conventions.
Also in 3 projects that use this
nilssonrSkillseo
Full SEO workflow for auditing pages and creating SEO-optimized content. Provides checklists with educational explanations aligned with Google Search Central documentation.
Also in 3 projects that use this
Microsoft AzureSkillgit-workflow
Squad branching model: dev-first workflow with insiders preview channel
Also in 3 projects that use this
Other versions24 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 24
- loulanyue/awesome-claude-notes★ 272same name
- Fmarzochi/EGC★ 61same name
- woxiangyangzhimao/skills★ 14same name
- gongyijie85/dsh-ecc★ 8same name
- zero-click/zero-ratchet★ 8same name
- AbdurRafay2004/handoff★ 4same name
- bhagyamudgal/skills★ 2same name
- quokkify/skills★ 2same name
- angusfretwell/skills★ 1same name
- cskwork/browser-qa★ 1same name
14 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- for-codex/AGENTS.mdAGENTS.md
- api-architectSkill
- code-auditorSkill
- doc-craftSkill
- git-flow-proSkill
- mcp-forgeSkill
- perf-hunterSkill
- refactor-masterSkill
- resilience-engineerSkill
- schema-architectSkill
- security-sentinelSkill
- ship-itSkill
- test-architectSkill
- threat-modelerSkill
- type-tightenerSkill
- ui-polishSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
24 rules. 0 are common, 9 are distinctive, and 15 are very specific to this project.
0
Common
Most of the 23 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
After implementing a UI change, before declaring it done
- Distinctive: line 14
When a unit test passes but the user says "it's still broken"
- Very specific: line 17
Do *not* trigger for: pure logic tests (use test-architect), API contract tests (use api-architect), or for code that has no UI surface.
- Distinctive: line 25
No flaky waits — every wait is anchored to an observable condition (a network response, a visible element, a URL change).
- Very specific: line 34
Read the existing test directory (tests/, e2e/, playwright/) to learn the project's conventions before writing new tests.
- Distinctive: line 38
Before writing the test, write the steps in plain English.
- Distinctive: line 54
Use Playwright's built-in locators in this priority order:
- Very specific: line 61
Never use XPath. Never use page.locator('div > div > div:nth-child(3)').
- Very specific: line 67
After a click that submits a form → await page.waitForResponse(r => r.url().includes('/api/auth/signup') && r.ok())
- Very specific: line 68
After a navigation → await expect(page).toHaveURL('/onboarding')
- Very specific: line 69
After a state change → await expect(page.getByText('Welcome')).toBeVisible()
- Very specific: line 71
Never await page.waitForTimeout(2000).
- Very specific: line 85
When a test fails, point the user at the trace: npx playwright show-trace test-results/<name>/trace.zip.
- Very specific: line 89
Run with --reporter=list for human-readable output.
- Distinctive: line 91
If green: report which flows passed, and which assertions actually fired.
- Distinctive: line 92
If red: report the specific step that failed, the expected vs actual, and the path to the screenshot.
- Very specific: line 98
Use test.describe.serial(...) only when state is genuinely shared.
- Very specific: line 103
Don't share auth state via global variables.
- Very specific: line 104
Don't assert on the absence of an element with toBeHidden() without a timeout — the negative path is the flakiest in Playwright.
- Distinctive: line 105
Don't run against prod. Have the user point at staging or local.
- Very specific: line 106
Don't catch the error and console.log it.
- Distinctive: line 112
Check the project for an existing Playwright config — none found.
- Very specific: line 115
Write tests/signup.spec.ts using getByRole and getByLabel.
- Very specific: line 116
Add waitForResponse on the signup POST and toHaveURL('/onboarding') after redirect.
“Common” is measured: kept by at least 6 in 10 of the 23 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
browser-qa — verify with the browser, not by guessing
When to use this skill
Trigger when the user wants confirmation that a user-visible flow actually works. Strong signals:
- "test the signup flow", "verify checkout", "qa this page"
- After implementing a UI change, before declaring it done
- When a unit test passes but the user says "it's still broken"
- "screenshot what the page looks like at
<state>"
Do not trigger for: pure logic tests (use test-architect), API contract tests (use api-architect), or for code that has no UI surface.
The output contract
A Playwright run that produces:
- A test file (or files) that another engineer can read in 60 seconds and understand the flow.
- A pass/fail result with the specific failing step and a screenshot of that step.
- No flaky waits — every wait is anchored to an observable condition (a network response, a visible element, a URL change).
- A trace file the user can open in
npx playwright show-tracefor any failure.
Workflow
1 — Reconnaissance
- Is Playwright already installed? Check
package.jsonandplaywright.config.{ts,js}. - If not:
npm i -D @playwright/test && npx playwright install --with-deps chromium. - Read the existing test directory (
tests/,e2e/,playwright/) to learn the project's conventions before writing new tests.
2 — Map the flow
Before writing the test, write the steps in plain English. Example:
signup flow:
1. visit /signup
2. fill email + password
3. click "Create account"
4. expect navigation to /verify-email
5. open the verification link from the test mailbox
6. expect /onboardingShow this to the user. Confirm the flow matches before coding. Half of bad e2e tests fail because they tested the wrong sequence.
3 — Write the test
Use Playwright's built-in locators in this priority order:
getByRole('button', { name: 'Sign in' })— accessible, resilient to copy changesgetByLabel('Email')— for form inputsgetByTestId('checkout-submit')— when nothing else is stable- CSS selectors — last resort, only when the above don't fit
Never use XPath. Never use page.locator('div > div > div:nth-child(3)'). Those are landmines.
4 — Eliminate flake at write time
For every interaction that triggers async work:
- After a click that submits a form →
await page.waitForResponse(r => r.url().includes('/api/auth/signup') && r.ok()) - After a navigation →
await expect(page).toHaveURL('/onboarding') - After a state change →
await expect(page.getByText('Welcome')).toBeVisible()
Never await page.waitForTimeout(2000). If you find yourself reaching for it, the test is wrong.
5 — Capture on failure
Configure playwright.config.ts:
use: {
trace: 'retain-on-failure',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
},When a test fails, point the user at the trace: npx playwright show-trace test-results/<name>/trace.zip.
6 — Run and report
Run with --reporter=list for human-readable output. After the run:
- If green: report which flows passed, and which assertions actually fired.
- If red: report the specific step that failed, the expected vs actual, and the path to the screenshot.
Patterns and anti-patterns
✅ Do:
- One flow per test file.
signup.spec.ts,checkout.spec.ts,password-reset.spec.ts. - Use
test.describe.serial(...)only when state is genuinely shared. Default to parallel. - Pin Playwright + browser versions in
package.json. A floating browser breaks tests in CI. - Mock or stub external services (Stripe webhooks, email providers) — your test owns the failure, not their flakiness.
❌ Don't:
- Don't share auth state via global variables. Use
storageStateper test or per worker. - Don't assert on the absence of an element with
toBeHidden()without atimeout— the negative path is the flakiest in Playwright. - Don't run against prod. Have the user point at staging or local; refuse to run destructive flows against prod URLs.
- Don't catch the error and
console.logit. Let the test framework fail.
Example invocation
User: "Verify the signup → first-login flow works on localhost:3000."
- Check the project for an existing Playwright config — none found.
- Install Playwright and Chromium with deps.
- Map the flow with the user: visit /signup → fill form → submit → land on /onboarding → see welcome message.
- Write
tests/signup.spec.tsusinggetByRoleandgetByLabel. - Add
waitForResponseon the signup POST andtoHaveURL('/onboarding')after redirect. - Run:
npx playwright test tests/signup.spec.ts --reporter=list. - Report: 1/1 passed, trace at test-results/signup/trace.zip if you want to scrub through it.
See also
test-architect— for unit and integration tests that don't need a browsercode-auditor— to find logic bugs the e2e didn't reachui-polish— when the test passes but the page still looks broken
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

