Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By wizenheimer
Record and replay browser QA sessions with Playwright traces, videos, and HAR files. Automate one-off browser tasks like clicking, filling forms, and scraping. Review session results with pass/fail summaries and error details. Generate prioritized QA plans from git diffs.
npx claudepluginhub wizenheimer/canary --plugin canaryOpen the Canary session viewer and triage a recorded session.
Automate a one-off browser task with Canary — navigate, click, scrape, screenshot — and return the result.
Record a verifiable QA session (trace, video, HAR, console) and render a report.
Turn a code change into a prioritized browser-QA plan with Canary, then optionally record the flows.
Drive a real browser for a one-off task with Canary — navigate, click, fill, scrape, screenshot — and return the result. Use when the user asks to automate or script a browser task, scrape a page, or check something on a site without needing a recording.
Open and triage recorded Canary sessions. Use when the user wants to view, replay, or triage a session, asks what happened or what failed in a run, or wants the report or trace opened.
Record a verifiable Canary QA session — explore a flow step by step against one persistent browser, each script a recorded step capturing trace/video/HAR/console, then render report.html. Use when the user wants to verify or QA a flow, capture a trace or video, or produce a shareable report of a browser run.
Turn a code change into a prioritized browser-QA plan with Canary — read the git diff, infer the affected user-facing workflows, and suggest concrete flows and the checks that must hold, then optionally record them as a session with a report. Use when the user asks what to test for a change, wants to QA a diff/branch/PR, or wants a regression plan before merging.
Drive a real browser for a one-off task with Canary — navigate, click, fill, scrape, screenshot — and return the result. Nothing is recorded. Use when the user asks to automate a browser task, scrape a page, fill a form, or check something on a site without needing a report. Trigger phrases — "go to X and get Y", "scrape this page", "automate this browser task", "log in and check", "take a screenshot of".
Open and triage recorded Canary sessions in the local viewer. Use when the user wants to look at, replay, compare, or triage a recorded session — or asks what happened in a run, to open the report, or to see the trace/video/screenshots. Trigger phrases — "open the canary viewer", "show me the last session", "what failed in that run", "review the recording", "open the report".
The Canary sandbox scripting API for browser automation. Use when writing or debugging a Canary script — looking up how to open a page, click, fill, extract text, observe an unknown page with snapshotForAI, evaluate in the page, take a screenshot, persist data between steps, or understand sandbox limits (no imports, timeouts). Trigger phrases — "how do I click in canary", "canary page API", "what's on this page", "explore a page in canary", "snapshotForAI", "saveScreenshot signature", "get text from the page", "why is my canary script timing out", "open a new tab in canary".
Record a verifiable QA session with Canary — explore a flow step by step against one persistent browser, each script a recorded step that captures a Playwright trace, video, network HAR, and console, then render a self-contained report.html. Use when the user wants to verify or QA a flow, produce evidence or a report, or capture a trace/video of a browser run. Trigger phrases — "record a session", "QA this flow", "verify the checkout", "capture a trace", "give me a report of this run".
Turn a code change into a prioritized browser-QA plan with Canary — read the git diff, infer which user-facing workflows it touches, suggest the concrete flows and the checks that must hold, then optionally record those flows as a session with a report.html. Use when the user has changed code and asks what to test, wants to QA a diff, branch, or PR, or wants a focused regression plan before merging. Trigger phrases — "what should I test for this change", "QA my diff", "verify this PR", "I changed X, what flows might break", "regression plan for this branch", "what should I QA before merging".
Uses power tools
Uses Bash, Write, or Edit tools
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Playwright E2E test debugging and interactive browser exploration. Runs tests with action capture (DOM snapshots, network, console, screenshots), diagnoses failures, and provides browser tools for navigating, clicking, and inspecting pages through ARIA snapshots.
Simplified CLI-integrated plugin for E2E testing with essential slash commands plus dynamic API CLI workflows (`qa-use api`). Provides AI-first feature verification, browser automation, and test management. All CLI operations documented in SKILL.md and accessible via `qa-use docs` for harness compatibility.
Production-grade Playwright testing toolkit. Generate tests from specs, fix flaky failures, migrate from Cypress/Selenium, sync with TestRail, run on BrowserStack. 55+ ready-to-use templates, 3 specialized agents, smart reporting that plugs into your existing workflow.
End-to-end test automation with Playwright, Cypress, and Selenium for browser-based testing
Browser automation and E2E testing with Playwright. Auto-detects dev servers, writes clean test scripts. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use for cross-browser testing, visual regression, API testing, component testing in TypeScript/JavaScript and Python projects.
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
QA harness built for Claude Code.
Canary is a QA harness purpose built for coding agents like Claude Code. It reads your code diffs, identifies the affected UI flows, and tests them in real browser instances using Claude Code.
Under the hood, it ships with a QuickJS WASM sandbox exposing the full Playwright API, letting Claude automate any long-running UI task — from handling logins to navigating complicated UIs.
Instead of clicking through flows by hand to reproduce and verify issues, Canary provides full session recordings. You get screen recordings with console logs, network requests, HARs, and Playwright traces so you can inspect exactly what the agent did.
Every Canary run captures a reusable Playwright script. Letting you re-run it in CI with zero inference cost on replay.
Most testing tools force you to choose between two extremes:
Canary doesn't make you choose: the agent does the QA and hands you a reproducible script.
report.html — open it, commit it, send it. No server, no build.Page API — no Node, no host access.https://github.com/user-attachments/assets/8459994a-b43c-4483-bb4a-00522d1d03fe
You describe the flow in plain language; your agent drives a real browser and hands back both a report you can just read and the exact Playwright script — plus the full trace — behind it. Most tools make you pick one: an opaque agent run you can't reproduce, or raw Playwright you write and maintain by hand. Canary gives you both.
| You are a… | Instead of… | Canary gives you… |
|---|---|---|
| Developer | Writing and maintaining Playwright/E2E scripts by hand | A reusable script captured from every run — re-run it in CI, no agent cost on replay |
| QA engineer | Clicking through flows manually to repro and verify | Evidence by default — trace, video, network, console, and a screenshot of every step |
| PM / reviewer | Waiting on a build or trusting "works on my machine" | A self-contained report.html you open and read — every step, replayable and shareable |
npm i -g @usecanary/cli @usecanary/ui # puts `canary` + `canary-viewer` on your PATH
canary install # one-time: Chromium + the runtime into ~/.canary (~150 MB)
…or run the guided wizard, which offers to install all of the above for you:
npm create canary@latest # guided setup (Ink wizard)
Record a session and open the report:
id=$(canary session start --name "checkout")
canary run ./open.js --session "$id" --step open
canary run ./submit.js --session "$id" --step submit
canary session end "$id" # -> ~/.canary/sessions/<id>/report.html
canary-viewer # browse every recorded session
canary stop # shut the background daemon down when you're done
Just need a quick one-off with no recording? Drive the browser engine directly:
echo 'const p = await browser.getPage("main");
await p.goto("https://example.com");
console.log(await p.title());' | canary-browser
Or attach to a Chrome you already have open — launch it with --remote-debugging-port=9222, then
canary-browser --connect (it auto-discovers the port, or pass the URL explicitly). Handy for driving
a browser that's already logged in:
canary-browser --connect http://localhost:9222 <<'EOF'
const page = await browser.getPage("main");
console.log(await page.title());
EOF
Prefer not to install? Every command also runs one-off via npx, e.g.
npx @usecanary/cli session start …andnpx @usecanary/ui.