Repository navigation
feat(e2e): route browser tools by role via playwright-test - #45
Merged
Merged
Conversation
wxhou
force-pushed
the
feat/e2e-mcp-tool-routing
branch
from
October 16, 2026 06:13
5ab7253 to
a155701
Compare
test_* / planner_* / generator_* live only on the playwright-test MCP; exploration prefers it, chrome-devtools only for absent/broken tools or CDP-level abilities; login state rides the storageState chain. doctor gains an optional storage-state check (declared but missing → ⚠ + setup command); README/CHANGELOG same commit. Tests: 757/757 pass. Lint/typecheck/build clean. No version bump.
wxhou
force-pushed
the
feat/e2e-mcp-tool-routing
branch
from
October 16, 2026 06:13
a155701 to
3d17a7c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & Why
Sessions often carry two overlapping browser toolsets (our installed
playwright-testtest-runner MCP + a user-addedchrome-devtools-mcp), while the template said only "Browser exploration is tool-agnostic" — leaving tool choice to surface similarity. Two follow-on effects: unstable tool selection, and the fresh-context asymmetry (chrome-devtools rides the user's persistent profile; the test-runner browser is the paused test's fixture context, fresh each launch) being misread as a configuration bug.Changes
templates/e2e-command.md— "tool-agnostic" → role-routing table: generate/execute/repair pinned toplaywright-testMCP (sole home oftest_*/planner_*/generator_*); exploration prefers it with a chrome-devtools fallback gated on absent / failing-or-hanging (switch, don't retry into the same failure) / CDP-level abilities; ≥5 routes →openspec-pw explore --parallel N; negative-first state prohibition (never switch to gain or reuse state)auth.setup→playwright.configstorageState chain; storage-class browser tools are listed by the server but rejected by its paused-test session (measured on playwright 1.63.0: 89 tools, storage capability filtered out, cross-launch localStorage not persisted) — prevents reaching for them off the tool listnpx playwright test --grep(same engine, not a tool switch)doctor— new optionalstorage-statecheck: config declaresstorageStatebut auth state file missing → ⚠ +npx playwright test --project=setup(never blocks; literal-path extraction first, auth.setup.ts layout guard, else silent)OpenSpec change:
e2e-mcp-tool-routing(specs delta under test-runner-mcp; measured evidence in design D3)Gates