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- 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)
How to use browser-qa
- 1.Navigate to the target URL and run a smoke test to check console errors, network status, and Core Web Vitals
- 2.Click nav links and submit forms to verify interactions work correctly
- 3.Take screenshots at 375px, 768px, and 1440px breakpoints and compare against baseline screenshots
- 4.Run axe-core accessibility checks and verify keyboard navigation works end-to-end
- 5.Review the QA report and use the verdict (SHIP / SHIP WITH FIXES / DO NOT SHIP) to decide next steps
Use cases
- 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
- 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
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.
Report the result as INCONCLUSIVE rather than a silent PASS. Establish baselines for key pages before comparing future runs.
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.
Works with claude-in-chrome (preferred), Playwright via Browserbase, or direct Puppeteer scripts.
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.
Related skills
More from affaan-m/ecc and the wider catalog.
bun-runtime
Fast all-in-one JavaScript runtime with built-in package manager, bundler, and test runner.
canary-watch
Monitor deployed URLs for regressions—checks endpoints, assets, performance, and console errors after releases.
carrier-relationship-management
Manage carrier portfolios, negotiate rates, and track performance with transportation expertise frameworks.
cisco-ios-patterns
Cisco IOS/IOS-XE review patterns for config, ACLs, wildcard masks, and safe change verification.
ck
Persistent per-project memory for Claude Code with auto-loaded context and git-aware session tracking.
claude-api
Agent skill from affaan-m/ecc.