| description | Browser automation for rendered UI exploration, validation, screenshots, recordings, and end-to-end flows. Use when a task needs an actual browser or rendered DOM: inspect UI state, click/fill forms, debug frontend behavior, capture evidence, verify a feature, or run/generate browser tests. NOT for API checks or pure logic tests where curl, unit tests, or JSDOM is cheaper. |
| name | browser-automation |
Browser Automation
Use a real browser only when rendered behavior matters: UI state, navigation,
forms, auth, screenshots, recordings, accessibility, visual checks, or
end-to-end flows.
Keep automation temporary unless the user asks for permanent tests. Do not use a
browser for plain HTTP API checks or pure logic tests.
Runtime Selection
- Prefer a platform built-in browser tool when available in the active tool
list. See
references/platform-browser-tools.md.
- Use the project's configured browser runner when it exists.
- Use
playwright-skill only as the bundled fallback/runtime reference.
- If no runtime is available, report blocked with the missing tool/package.
Use the cheapest runtime that proves the claim.
Workflow
- Define the goal: explore, validate, screenshot, record, debug, or test.
- Read needed local context: start scripts, browser config, routes, fixtures,
seed/reset docs, and auth notes.
- Detect or start the dev server. Reuse a reachable server.
- Use deterministic data: seeded users, fixed dates, stable IDs, reset state,
and mocked external services.
- Drive with semantic targets first: role, label, text, test id; CSS last.
- Capture artifacts needed to support the result: screenshot, trace, console
errors, network failures, accessibility snapshot, manifest, or report.
- Prefer screenshot/manifest evidence for visual checks in headless harnesses.