browser-qa
affaan-m/everything-claude-code
Automate visual testing and UI interaction verification after deploying features.
What is browser-qa?
Browser QA uses browser automation to verify UI behavior, interactions, and accessibility across pages after deployment. Use it before shipping to confirm layouts, forms, and critical user journeys work correctly across devices and accessibility standards.
- Run smoke tests: check console errors, network health, and Core Web Vitals (LCP, CLS, INP)
- Verify interactions: test nav links, form submissions (valid/invalid), auth flows, and critical journeys
- Perform visual regression: screenshot key pages at 3 breakpoints and compare against baselines
- Run accessibility audits: check WCAG 2.2 AA violations, keyboard navigation, and screen reader landmarks
- Generate structured QA reports with verdict (SHIP / SHIP WITH FIXES / DO NOT SHIP)
How to install browser-qa
npx skills add https://github.com/affaan-m/everything-claude-code --skill browser-qa- A browser automation MCP installed (claude-in-chrome, Playwright, or Puppeteer)
- Access to a staging or preview URL (never run mutating tests against production)
- Test credentials for auth flows (never use production logins)
- Baseline screenshots committed for visual regression (optional but recommended)
How to use browser-qa
- 1.Navigate to your staging/preview URL using the browser automation tool
- 2.Run a smoke test: check console errors, network requests, and Core Web Vitals
- 3.Execute interaction tests: click nav links, submit forms with valid/invalid data, test auth flows
- 4.Capture screenshots at 3 breakpoints (375px, 768px, 1440px) and compare against baselines if available
- 5.Run accessibility audit with axe-core to flag WCAG 2.2 AA violations
- 6.Review the generated QA report and assign a verdict (SHIP / SHIP WITH FIXES / DO NOT SHIP)
Use cases
- Verify a feature works across desktop and mobile viewports before shipping to production
- Test form validation and error states after frontend changes
- Audit accessibility compliance and catch missing alt text or contrast issues
- Validate critical user journeys (login, checkout, onboarding) in staging after deployment
- Review PRs that touch frontend code by running automated interaction and visual tests
- Frontend engineers verifying feature deployments
- QA engineers automating visual and interaction testing
- Product teams validating user journeys before release
- Accessibility auditors checking WCAG compliance
browser-qa FAQ
No. Default to read-only testing on staging/preview URLs only. Never run mutating journeys (checkout, delete, payment) against production. Use test credentials, never real production logins, and redact PII before saving screenshots.
Report the result as INCONCLUSIVE. Do not silently pass. Baseline screenshots should be committed to your repo for future comparisons.
No. Automated tools like axe-core cover only 30–40% of WCAG requirements. A clean run is necessary but not sufficient. You still need manual checks for keyboard navigation, focus order, and screen reader testing.
Browser QA works with claude-in-chrome (preferred, uses your actual Chrome), Playwright via Browserbase, or direct Puppeteer scripts.
LCP < 2.5s, CLS < 0.1, INP < 200ms. INP replaced FID in March 2024. These are the official thresholds from web.dev.
Full instructions (SKILL.md)
Source of truth, from affaan-m/everything-claude-code.
name: browser-qa description: Use this skill to automate visual testing and UI interaction verification using browser automation after deploying features. metadata: origin: ECC
Browser QA — Automated Visual Testing & Interaction
When to Use
- After deploying a feature to staging/preview
- When you need to verify UI behavior across pages
- Before shipping — confirm layouts, forms, interactions actually work
- When reviewing PRs that touch frontend code
- Accessibility audits and responsive testing
How It Works
Uses the browser automation MCP (claude-in-chrome, Playwright, or Puppeteer) to interact with live pages like a real user.
Safety first — blast radius (run read-only by default)
Browser QA drives real auth and real user journeys, so treat the blast radius explicitly. Default to read-only: never run a mutating journey (checkout, payment, delete, mass-update) against a production URL — require an explicit opt-in and a staging/preview URL. Use seeded test credentials, never real production logins, and redact credentials/tokens/PII before saving any screenshot.
Phase 1: Smoke Test
1. Navigate to target URL
2. Check for console errors (filter noise: analytics, third-party)
3. Verify no 4xx/5xx in network requests
4. Screenshot above-the-fold on desktop + mobile viewport
5. Check Core Web Vitals: LCP < 2.5s, CLS < 0.1, INP < 200ms
(INP replaced FID in March 2024; thresholds per web.dev)
Phase 2: Interaction Test
1. Click every nav link — verify no dead links
2. Submit forms with valid data — verify success state
3. Submit forms with invalid data — verify error state
4. Test auth flow: login → protected page → logout (test creds only, never prod)
5. Test critical user journeys (checkout, onboarding, search)
— read-only by default; only exercise mutating journeys against staging
with explicit opt-in (see "Safety first" above)
Phase 3: Visual Regression
1. Screenshot key pages at 3 breakpoints (375px, 768px, 1440px)
2. Compare against committed baseline screenshots
— no baseline ⇒ report INCONCLUSIVE, never a silent PASS
3. Flag layout shifts > 5px, missing elements, overflow
4. Check dark mode if applicable
Phase 4: Accessibility
1. Run axe-core or equivalent on each page
2. Flag WCAG 2.2 AA violations (contrast, labels, focus order)
3. Verify keyboard navigation works end-to-end
4. Check screen reader landmarks
Note: axe-core automatically covers roughly 30–40% of WCAG. A clean run is necessary, not sufficient — keyboard nav, focus order, and a screen-reader pass still need a manual check. Don't report "accessible" from an automated pass alone.
Output Format
## QA Report — [URL] — [timestamp]
### Smoke Test
- Console errors: 0 critical, 2 warnings (analytics noise)
- Network: all 200/304, no failures
- Core Web Vitals: LCP 1.2s ✓, CLS 0.02 ✓, INP 89ms ✓
### Interactions
- [✓] Nav links: 12/12 working
- [✗] Contact form: missing error state for invalid email
- [✓] Auth flow: login/logout working
### Visual
- [✗] Hero section overflows on 375px viewport
- [✓] Dark mode: all pages consistent
### Accessibility
- 2 AA violations: missing alt text on hero image, low contrast on footer links
### Verdict: SHIP WITH FIXES (2 issues, 0 blockers)
# verdict ∈ SHIP / SHIP WITH FIXES / DO NOT SHIP; use INCONCLUSIVE if no visual baseline
Integration
Works with any browser MCP:
mChild__claude-in-chrome__*tools (preferred — uses your actual Chrome)- Playwright via
mcp__browserbase__* - Direct Puppeteer scripts
Pair with /canary-watch for post-deploy monitoring.
Related skills
More from affaan-m/everything-claude-code and the wider catalog.
security-review
Security checklist and patterns for authentication, input validation, secrets, and sensitive features.
golang-patterns
Idiomatic Go patterns, best practices, and conventions for building robust, efficient, and maintainable applications.
coding-standards
Baseline coding conventions for naming, readability, immutability, and quality across projects.
frontend-patterns
React and Next.js patterns for components, state management, performance, and modern frontend practices.
backend-patterns
REST/GraphQL API design, database optimization, and server-side patterns for Node.js, Express, and Next.js.
golang-testing
Go testing patterns: table-driven tests, subtests, benchmarks, fuzzing, and TDD methodology.