Skip to main content
skill CX Codex

visual-qa-testing — Cursor skill: visual QA for your UI

Opens your app in Cursor's built-in browser, grabs a screenshot, reads console errors and audits network requests. Handy right after UI edits.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add spencerpauly/awesome-cursor-skills --skill visual-qa-testing -a claude-code
Open on GitHub

What visual-qa-testing does

This skill runs a visual QA pass on a web app without leaving Cursor. It leans on the built-in cursor-ide-browser MCP, which can open URLs, take screenshots, read console messages, inspect network requests and interact with page elements.

The flow: make sure the dev server is up, and if it is not, start it in the background with npm run dev and wait for the localhost line. Then browser_navigate opens the route, browser_take_screenshot captures the full page, browser_console_messages surfaces errors like TypeError, ReferenceError or React hydration mismatches, and browser_network_requests shows 4xx/5xx codes, CORS failures and duplicate calls. When the change touches buttons, forms or modals, browser_click, browser_fill and browser_hover drive the interaction and you screenshot again.

Before clicking anything, the skill advises calling browser_snapshot to get correct element refs. browser_resize covers responsive checks, and browser_navigate with position: "side" puts the browser next to your code. One catch: the whole thing depends on Cursor's built-in browser, so in other editors you would repeat these steps by hand.

What it helps with

  • check how a page renders after a layout change
  • catch JavaScript errors in the console before shipping
  • spot failed API calls and 4xx/5xx responses
  • test a button, form or modal by clicking it in the browser
  • view the page at a different viewport size

Example prompts for the agent

  • run a visual QA pass on the home page and show me the screenshot
  • check the console and network requests on /settings after my edits
  • click the save button and screenshot the result

How to install visual-qa-testing

1Skills CLI (Vercel)

npx skills add spencerpauly/awesome-cursor-skills --skill visual-qa-testing -a claude-code

2Manually: put the files in place

~/.claude/skills/visual-qa-testing/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/visual-qa-testing/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about visual-qa-testing

How do I install visual-qa-testing in Cursor?

Run npx skills add spencerpauly/awesome-cursor-skills --skill visual-qa-testing -a cursor. The skill lands at .cursor/skills/visual-qa-testing/SKILL.md.

What does visual-qa-testing do?

It opens a page in Cursor's built-in browser, takes a screenshot, reads console errors and checks network requests. That tells you what your UI change actually did.

Does it need a running dev server?

Yes. The skill first checks whether a dev server is running and, if not, starts one in the background with npm run dev. Wait for the localhost line in the output.

Source text

SKILL.md · CC0-1.0
---
name: visual-qa-testing
description: Visually QA a web application by launching it in Cursor's built-in browser, taking screenshots, checking console errors, and auditing network requests. Use after making UI changes to verify they look correct.
---

# Visual QA

Use this skill after making UI changes to visually verify the result, catch console errors, and audit network requests — all without leaving Cursor.

## How It Works

Cursor has a built-in browser (`cursor-ide-browser` MCP) that can navigate to URLs, take screenshots, read console messages, inspect network requests, and interact with page elements. This skill uses those tools to do a quick visual QA pass.

## Steps

1. **Ensure the dev server is running** — check if there's already a terminal running the dev server. If not, start one in the background:

   ```bash
   npm run dev
   ```

   Wait for the server to be ready (watch for the "ready" or localhost URL in the output).

2. **Navigate to the page** — use `browser_navigate` to open the relevant page:

   ```
   Tool: browser_navigate
   Arguments: { "url": "http://localhost:3000", "take_screenshot_afterwards": true }
   ```

   If the change is on a specific route, navigate directly to it (e.g., `/settings`, `/dashboard`).

3. **Take a screenshot** — capture the current state:

   ```
   Tool: browser_take_screenshot
   Arguments: { "fullPage": true }
   ```

   Review the screenshot for visual issues: layout breaks, missing content, wrong colors, misaligned elements.

4. **Check console for errors** — look for JavaScript errors or warnings:

   ```
   Tool: browser_console_messages
   ```

   Report any errors, especially `TypeError`, `ReferenceError`, failed imports, or React hydration mismatches.

5. **Audit network requests** — check for failed API calls or unexpected requests:

   ```
   Tool: browser_network_requests
   ```

   Look for: 4xx/5xx status codes, CORS errors, excessively large responses, unnecessary duplicate requests.

6. **Interact if needed** — if the change involves interactive elements (buttons, forms, modals), use `browser_click`, `browser_fill`, or `browser_hover` to test the interaction, then take another screenshot to verify.

7. **Report findings** — summarize:
   - Screenshot shows the UI looks correct (or what's wrong)
   - Console is clean (or list errors found)
   - Network requests are healthy (or list failures)

## Notes

- Always use `browser_snapshot` before clicking elements to get the correct element refs.
- For responsive testing, use `browser_resize` to check different viewport sizes.
- Use `browser_navigate` with `position: "side"` to open the browser beside your code.

© spencerpauly · CC0-1.0 · spencerpauly/awesome-cursor-skills

Similar skills

All skills for Testing and QA →

From the same set60

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor