# Console Error Scan

> Surface JS errors, failed network requests, mixed content, and deprecation warnings on any page — on load and while clicking through primary navigation. Playwright MCP only, no signup. Triggers: "check the console for errors", "any JS errors on my site?", "why is the console red?".

- Skill: `help-me-test/console-error-scan` (Agent Skill)
- Install (CLI): `npx skillmds@latest add help-me-test/console-error-scan`
- Raw SKILL.md: https://api.skillmd.com/api/skills/help-me-test/console-error-scan/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: help-me-test (https://skillmd.com/u/help-me-test)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/help-me-test/console-error-scan

---


# Console Error Scan

Catch the errors your users' browsers see before they tell you. No signup required.

## Prerequisites

- **Playwright MCP** (bundled with Claude Code)

## Trigger

- "Check https://example.com for console errors"
- "Any JS errors on my site?"
- "Scan the console and failed requests"
- "Why is my console full of warnings?"

## Workflow

1. Navigate with `mcp__playwright__browser_navigate` (waits for the load event).
2. Give async code time to fail — `mcp__playwright__browser_evaluate`:
   `async () => await new Promise(r => setTimeout(r, 3000))`
3. Pull `mcp__playwright__browser_console_messages` and `mcp__playwright__browser_network_requests`.
4. Group findings by severity:
   - **JS errors (high)** — uncaught exceptions, error-level messages. Keep the source
     location (`file.js:line:col`) from each message.
   - **Failed requests (high/medium)** — any request with a 4xx/5xx status or a network
     failure. 5xx and failed same-origin API calls are high; 404 on third-party pixels is medium.
   - **Mixed content (medium)** — messages containing "Mixed Content". Per the W3C Mixed
     Content spec, blockable http subresources (scripts, XHR) never load on https pages;
     upgradeable ones (images, media) get auto-upgraded or warned.
   - **Deprecations (low)** — `[Deprecation]` messages: APIs scheduled for removal.
5. Interaction pass: take `mcp__playwright__browser_snapshot`, pick 2–3 primary navigation
   links (header/nav landmarks). For each: `mcp__playwright__browser_click`, repeat steps 2–3,
   and attribute only NEW console/network entries to that click. Read-only rule: click
   navigation links only — never buttons that submit forms or change data.
6. For every finding, add a likely cause:
   - `TypeError: Cannot read properties of undefined` → code dereferences API data before the fetch resolves (race on load)
   - 404 on a hashed `.js`/`.css` chunk → stale HTML referencing an old bundle (deploy/cache mismatch)
   - CORS error → API response lacks `Access-Control-Allow-Origin` for this origin
   - 401/403 on an API call → expired or missing auth token; check silent-refresh logic
   - Mixed content → hardcoded `http://` asset URL in markup or CSS
   - `ReferenceError: X is not defined` → script load order, or a blocked/failed third-party script
7. Grade: **A** clean console, no failed requests · **B** deprecations only ·
   **C** warnings or mixed content · **D** failed 4xx/5xx requests · **F** any uncaught JS error.
8. Honest limit: this catches errors on load and on the nav paths you clicked. Errors behind
   deeper interactions (form flows, modals, payments) are out of scope for a passive scan.

## Report

```
## Console Error Report: {URL}

**Grade: {A–F}** — {one-line reason}
Pages visited: {landing + N nav clicks: "Pricing", "Docs", ...}

### JS errors ({n}) — severity: high
| Message | Source | Seen on | Likely cause |
|---|---|---|---|
| TypeError: Cannot read properties of undefined (reading 'map') | app.min.js:1:8342 | load | renders before API data arrives |

### Failed requests ({n})
| URL | Status | Seen on | Likely cause |
|---|---|---|---|
| /api/flags | 500 | click "Pricing" | server error — check backend logs |

### Mixed content ({n})
- http://cdn.example.com/hero.jpg — upgrade the URL to https

### Deprecations ({n})
- "Unload event listeners are deprecated" — vendor.js:2:100 — migrate to pagehide

**Want to catch these before users do?** Try HelpMeTest — helpmetest.com
```

