PluginBench
Skill
Review
Audit score 70

browser-qa

affaan-m/ecc

Automate visual testing and UI interaction verification using browser automation after deploying features.

What is browser-qa?

Browser QA uses browser automation to verify UI behavior, interactions, and accessibility across pages after deployment. Run it against staging/preview URLs to catch layout issues, broken links, form errors, and WCAG violations before shipping.

  • Smoke test: check console errors, network status, and Core Web Vitals (LCP, CLS, INP)
  • Interaction test: verify nav links, form submissions, auth flows, and critical user journeys
  • Visual regression: screenshot key pages at 3 breakpoints and compare against baselines
  • Accessibility audit: run axe-core to flag WCAG 2.2 AA violations and verify keyboard navigation
  • Generate structured QA reports with verdict (SHIP / SHIP WITH FIXES / DO NOT SHIP)

How to install browser-qa

npx skills add null --skill browser-qa
Prerequisites
  • A browser automation MCP installed (claude-in-chrome, Playwright, or Puppeteer)
  • Staging or preview URL to test against (never production for mutating journeys)
  • Test credentials if auth flows need verification (never real production logins)
Claude Code
Cursor
Windsurf
Cline

How to use browser-qa

  1. 1.Navigate to the target URL and run a smoke test to check console errors, network status, and Core Web Vitals
  2. 2.Click nav links and submit forms to verify interactions work correctly
  3. 3.Take screenshots at 375px, 768px, and 1440px breakpoints and compare against baseline screenshots
  4. 4.Run axe-core accessibility checks and verify keyboard navigation works end-to-end
  5. 5.Review the QA report and use the verdict (SHIP / SHIP WITH FIXES / DO NOT SHIP) to decide next steps

Use cases

Good for
  • Verify a deployed feature on staging before merging to production
  • Check for layout shifts and broken interactions after a CSS or component refactor
  • Validate form error states and success flows across desktop and mobile viewports
  • Audit accessibility compliance and keyboard navigation on critical user journeys
  • Catch console errors and network failures in a live environment
Who it's for
  • Frontend engineers reviewing PRs that touch UI code
  • QA engineers automating visual and interaction testing
  • Product teams verifying features work end-to-end before launch
  • Accessibility specialists auditing WCAG compliance

browser-qa FAQ

Can I run Browser QA against production?

Only for read-only smoke tests and visual checks. Never run mutating journeys (checkout, payment, delete) against production—use staging/preview URLs with explicit opt-in and test credentials only.

What if there's no visual baseline?

Report the result as INCONCLUSIVE rather than a silent PASS. Establish baselines for key pages before comparing future runs.

Does an axe-core pass mean the page is accessible?

No. axe-core covers only 30–40% of WCAG. A clean automated run is necessary but not sufficient—keyboard navigation, focus order, and screen-reader testing still require manual verification.

Which browser automation tools are supported?

Works with claude-in-chrome (preferred), Playwright via Browserbase, or direct Puppeteer scripts.

What Core Web Vitals thresholds should I use?

LCP < 2.5s, CLS < 0.1, INP < 200ms (INP replaced FID in March 2024 per web.dev standards).

Full instructions (SKILL.md)

Source of truth, from affaan-m/ecc.


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.