Skip to content

Make qa-explorer use local browser subagent without cbox fallback

Problem

Make qa-explorer run through the local subagent/browser path instead of any cbox fallback, ensure the browser automation stack is available to claude -p style task execution, isolate concurrent browser sessions so multiple QA runs do not interfere with each other, and evaluate whether Claude recommends a better-supported browser automation path than Playwright before locking the implementation.

Context

  • qa-explorer should validate browser-facing changes from the local task flow, not bounce into any legacy cbox path.
  • The task-manager flow already standardizes local worktrees, scripts/dispatch, and per-worktree .worktree-ports.json manifests for concurrent QA targets.
  • The current failure mode is twofold:
  • local browser automation is not reliably available to the agent runtime that launches qa-explorer
  • the skill/docs still leave room for legacy fallback behavior instead of failing fast on missing local browser capability
  • The desired outcome is a local subagent-driven QA path that works with claude -p style task execution and does not let concurrent browser runs stomp on each other.
  • If Claude or the repo now has a better-supported browser automation stack than Playwright, this task should prefer that option instead of preserving Playwright out of habit.

Possible Solutions

  • Recommended: keep qa-explorer local-only and run it through a dedicated browser subagent that receives the worktree cloud_url, provisions an isolated browser profile/session per run, and fails fast with a clear blocker when browser tooling is unavailable. This matches the non-cbox task-manager architecture and keeps concurrency concerns inside one runner contract.
  • Patch the current Playwright MCP wiring only, keep the rest of the skill contract unchanged. This is smaller, but risks preserving hidden coupling to whichever local browser surface happened to work first.
  • Replace Playwright with another Claude-supported browser driver if it has clearly better support for concurrent isolated sessions. This is only worth doing if the newer path is meaningfully more reliable and still scriptable from the local subagent flow.

Plan

  1. Audit qa-explorer, task-manager, and any local browser/subagent entrypoints to document the intended local-only execution path.
  2. Decide the canonical browser automation backend:
  3. keep Playwright if it is the best-supported local option
  4. otherwise switch to the better-supported Claude/browser runner and update docs/contracts accordingly
  5. Make the browser QA invocation happen through a local subagent/worker flow that is compatible with claude -p task execution and receives the target URL from .worktree-ports.json or scripts/dispatch-watch.
  6. Ensure each QA run gets isolated browser state so multiple concurrent runs can execute safely:
  7. separate browser profile/session directories
  8. separate artifact/output directories
  9. no shared mutable global browser cache that causes cross-run interference
  10. Remove or explicitly reject any cbox fallback in the skill and surrounding docs so failures surface as local-tooling blockers instead of silently taking the old path.
  11. Add focused validation/tests/docs for:
  12. missing-browser-tooling failure mode
  13. concurrent QA run isolation
  14. worktree URL handoff into the browser runner
  15. expected subagent invocation path

Implementation Progress

  • Not started.

QA Exploration

N/A for this task file itself. The implementation should improve the repo's browser QA mechanism rather than rely on that same mechanism as a prerequisite for task creation.

  • QA exploration completed (or N/A for non-UI tasks)

Review Feedback

  • Review cleared