
Qa Use
Run E2E tests and browser automation from your agent via the qa-use CLI without wiring a separate QA harness.
Install
npx skills add https://github.com/desplega-ai/qa-use --skill qa-useWhat is this skill?
- Full qa-use CLI workflows for harnesses that only expose Bash (slash commands are optional shortcuts)
- Setup via qa-use setup, QA_USE_API_KEY, and project or home .qa-use.json with env-var precedence
- Documented verify and automation flows for AI-driven dev loops
- Browser interaction and test-failure debugging oriented to agent workflows
Adoption & trust: 1 installs on skills.sh; 24 GitHub stars; 2/3 security scanners passed (skills.sh audits).
Recommended Skills
Agent Browservercel-labs/open-agents
Tddmattpocock/skills
Use My Browserxixu-me/skills
Test Driven Developmentobra/superpowers
Verification Before Completionobra/superpowers
Webapp Testinganthropics/skills
Journey fit
Common Questions / FAQ
Is Qa Use safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Qa Use
# qa-use E2E testing and browser automation for AI-driven development workflows. ## Critical Insight: Plugin Commands as Shortcuts **For AI Harnesses (codex, opencode, etc.):** Plugin commands (slash commands like `/qa-use:verify`) are **convenience shortcuts** that wrap CLI workflows. Harnesses with only the Bash tool can access ALL functionality via CLI commands documented below. **Pattern throughout this document:** - **CLI Workflow**: Step-by-step CLI commands (works for ALL harnesses) - **Plugin Shortcut**: Optional slash command (convenience) ## Setup & Configuration Before using any qa-use commands, verify configuration is in place: ```bash # Check current configuration (no-op if already configured) qa-use setup # Configure with API key (validates against server) qa-use setup --api-key <key> # View full configuration details qa-use info ``` **Environment Variables (alternative to config file):** | Variable | Description | |----------|-------------| | `QA_USE_API_KEY` | API key for authentication | | `QA_USE_REGION` | Region: `us` (default) or `auto` | | `QA_USE_API_URL` | Override API base URL | **Config file:** `.qa-use.json` in the project directory or `~/.qa-use.json` in the home directory. Precedence: env vars > project `.qa-use.json` > `~/.qa-use.json`. **If you encounter "API key not configured", 401, or auth errors:** Run `qa-use setup` to check config state. NEVER fabricate or guess API keys. ## Core Workflow ### 1. Browser Control & Session Lifecycle **CLI Workflow:** ```bash # Create browser session (returns immediately — runs detached in the background) qa-use browser create --viewport desktop # For localhost testing — auto-tunnels when base URL is localhost and API is remote. # No flag needed for the common case: qa-use browser create --no-headless http://localhost:3000 # Force a tunnel even in dev mode: qa-use browser create --tunnel on --no-headless # Opt out of auto-tunnel (e.g. backend is also local): qa-use browser create --no-tunnel # Navigate qa-use browser goto https://example.com # Snapshot to get element refs (ALWAYS do this before interacting) qa-use browser snapshot # Interact by ref qa-use browser click e3 qa-use browser fill e5 "text" # Close qa-use browser close ``` **Background session management:** `qa-use browser create` returns immediately — the actual browser + tunnel run in a detached child process so your terminal stays free. Manage sessions with: ```bash qa-use browser status --list # Show all active sessions across processes qa-use browser status # Details for the auto-resolved session qa-use browser close <id> # Close a specific session qa-use doctor # Reap stale sessions/tunnels (dead PIDs) qa-use doctor --dry-run # Preview what would be cleaned ``` **Tunnel commands:** Cross-process tunnel registry — multiple commands share a single tunnel per target: ```bash qa-use tunnel start <url> # Acquire a tunnel (released immediately unless --hold) qa-use tunnel start <url> --hold # Keep the tunnel up until Ctrl+C qa-use tunnel ls # List active tunnels (target, public URL, refcount) qa-use tunnel status <target> # Detail for a single tunnel qa-use tunnel close <target> # Force-release a tunnel (kills detached holders) ``` **Plugin Shortcut:** ``` /qa-use:explore https://example.com ``` (Wraps create + goto + snapshot with autonomous exploration) **Critical:** Always run `snapshot` before your **first** interaction on a page. Never guess element refs. **Snapshot Diff Feature (use it to avoid unnecessary snapshots):** After each action (goto, click, fill, etc.), the browser automatically shows DOM changes: - **Summary**: "5 elements added, 1 element modified"