Skip to content
Back to skills

Browser E2e

ASecurity

Browser-driven E2E discipline. Thin pointer — defers to anthropics:webapp-testing plugin for Python Playwright scripts and to playwright MCP / chrome-devtools MCP / Claude in Chrome based on the situation. Use when verifying any web change.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 9, 2026
ai-agentspythongobashnodetestingdebugginggit

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 9, 2026

npx -y skills add qyndex/claude-init --skill browser-e2e --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Browser E2e?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Browser E2e
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qyndex-browser-e2e/badge)](https://www.skillsdirectory.com/skills/qyndex-browser-e2e)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: browser-e2e
description: Browser-driven E2E discipline. Thin pointer — defers to anthropics:webapp-testing plugin for Python Playwright scripts and to playwright MCP / chrome-devtools MCP / Claude in Chrome based on the situation. Use when verifying any web change.
when_to_use: Verifying a web app, debugging a UI bug, generating E2E tests from a spec, capturing visual evidence. User says "test in browser", "E2E", "open the app and try", "did the UI work".
mcpServers: [chrome-devtools, playwright]
model: inherit
---

# Browser-Driven E2E

Decide which tool **before** writing code:

| Goal | Tool | Why |
|---|---|---|
| Authenticated user journey (Gmail, your admin panel, Notion) | **Claude in Chrome** (`claude --chrome`) | Uses your real cookies |
| Deterministic CI test, no auth | **`anthropic:webapp-testing` plugin** | Python Playwright + `with_server.py` lifecycle helper |
| Exploratory drive (clicks, fills, snapshots) | **playwright-mcp** | Snapshot-based deterministic refs |
| Perf, network, Lighthouse | **chrome-devtools-mcp** | Full DevTools, traces |
| Visual regression | **Chromatic / Percy / Argos** (out of band, CI) | Pixel diff at PR time |

## The user-journey pattern (playwright-mcp)

```
1. browser_navigate(url)
2. browser_snapshot()                    # capture a11y tree
3. browser_click(ref: "<from snapshot>")
4. browser_fill(ref: "...", value: "...")
5. browser_wait_for(text: "Welcome")
6. browser_take_screenshot(filename: "verify/<date>/step-<n>.png")
7. browser_console_messages()    # assert: no errors
8. browser_network_requests()    # assert: 200 on critical endpoints
```

## The codegen-then-expand pattern

```bash
npx playwright codegen http://localhost:3000
# perform the journey by hand
# save as tests/e2e/<feature>.spec.ts
# feed to researcher agent: "expand with edge cases per the spec acceptance criteria"
```

## Hard rules

- **Real-ish data.** Fresh seeded DB or test tenant. No internal mocks.
- **Capture at every step.** Screenshot before and after the critical action.
- **Assert on the journey, not implementation.** "User sees dashboard" > "div.welcome present".
- **Negative paths.** Bad password, missing field, expired session. Each gets a step.
- **Save artifacts.** `verify/<date>-<feature>/` is the home.

## Coverage gate ("100% coverage" enforcement)

Per CLAUDE.md §VII, the verifier captures coverage alongside screenshots. `.claude/scripts/verify.sh` enforces:

| Tier | Threshold | Source |
|---|---|---|
| Line coverage | ≥ 80% on changed files | `c8` (Node), `coverage.py` (Python), `go test -cover` |
| Branch coverage | ≥ 70% on changed files | `c8`, `coverage.py` |
| E2E user journey | 100% of spec acceptance criteria | one Playwright step per criterion |

Configure your test runner to emit `coverage/coverage-summary.json` (c8 / `@vitest/coverage-v8` / `coverage report --format=json`). The gate reads that file and fails on threshold breach.

For UI-specific coverage:
- **Playwright + c8**: `c8 --reporter=json-summary playwright test` produces the summary `verify.sh` reads.
- **@playwright/test built-in**: enable trace in `playwright.config.ts`, post-process for code coverage.

If a project has no coverage tooling yet, **the autopilot verifier must skip the gate and flag ESCALATION** in `OVERNIGHT_REPORT.md`. Never fake-pass without the report. Set `SKIP_COVERAGE=1` for explicit short-term skips.

## References

- chrome-devtools-mcp: https://github.com/ChromeDevTools/chrome-devtools-mcp
- playwright-mcp: https://github.com/microsoft/playwright-mcp
- anthropic:webapp-testing: https://github.com/anthropics/skills/blob/main/skills/webapp-testing/SKILL.md
- Claude in Chrome: https://code.claude.com/docs/en/chrome

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.