Files
openclaw/qa/scenarios/runtime/tool-search-gateway-e2e.yaml
Dallin Romney 4b8a0a8ecf Migrate Tool Search gateway E2E into QA Lab flow (#97478)
* test: migrate tool search gateway to QA flow

* test: use built SDK in tool search QA fixture

* test: fix tool search QA fixture lint

* test: gate tool search QA flow to mock provider

* Share QA Lab fixture utilities

* Tighten QA fixture helper defaults

* test: gate tool search QA flow mode
2026-06-28 18:16:15 -07:00

95 lines
3.4 KiB
YAML

title: Tool Search gateway E2E
scenario:
id: tool-search-gateway-e2e
surface: runtime
coverage:
primary:
- runtime.hosted-tool-use
secondary:
- plugins.plugin-tools
- tools.invocation
objective: Verify the Tool Search gateway QA Lab flow keeps a large plugin-owned tool catalog behind the compact bridge while still invoking the selected plugin tool.
successCriteria:
- Direct mode exposes the fake plugin tool schemas and calls the selected plugin tool.
- Tool Search code mode exposes only the compact bridge to the provider.
- The compact bridge calls the same selected plugin tool and records bridge plus target tool mentions in session logs.
- The Tool Search request payload is smaller than direct tool exposure for the large fake catalog.
docsRefs:
- docs/tools/tool-search.md
- docs/gateway/protocol.md
- docs/concepts/qa-e2e-automation.md
codeRefs:
- extensions/qa-lab/src/tool-search-gateway.fixture.ts
- extensions/qa-lab/src/tool-search-gateway.fixture.test.ts
execution:
kind: flow
suiteIsolation: isolated
isolationReason: Mutates gateway plugin/tool-search config and restarts the QA gateway between direct and compact lanes.
summary: Flow-backed gateway E2E for compact Tool Search bridge and plugin-owned tool invocation.
config:
requiredProviderMode: mock-openai
targetTool: fake_plugin_tool_17
toolCount: 36
flow:
steps:
- name: stages fake plugin tool catalog
actions:
- assert:
expr: "env.providerMode === config.requiredProviderMode"
message: this seeded scenario is mock-openai only
- call: qaImport
saveAs: toolSearch
args:
- ./tool-search-gateway.fixture.js
- call: toolSearch.stageToolSearchGatewayFixture
saveAs: toolSearchFixture
args:
- env:
ref: env
targetTool:
expr: config.targetTool
toolCount:
expr: config.toolCount
detailsExpr: toolSearchFixture
- name: compares direct and compact Tool Search gateway lanes
actions:
- call: toolSearch.runToolSearchGatewayLane
saveAs: normalLane
args:
- env:
ref: env
fixture:
ref: toolSearchFixture
lane: normal
- call: toolSearch.runToolSearchGatewayLane
saveAs: codeLane
args:
- env:
ref: env
fixture:
ref: toolSearchFixture
lane: code
- call: toolSearch.assertToolSearchLaneResults
args:
- normal:
ref: normalLane
code:
ref: codeLane
targetTool:
ref: toolSearchFixture.targetTool
detailsExpr: |-
({
targetTool: toolSearchFixture.targetTool,
directDeclaredTools: normalLane.providerDeclaredToolCount,
compactDeclaredTools: codeLane.providerDeclaredToolCount,
directRawBytes: normalLane.providerRawBytes,
compactRawBytes: codeLane.providerRawBytes,
directPlannedTools: normalLane.providerPlannedTools,
compactPlannedTools: codeLane.providerPlannedTools,
directMentions: normalLane.sessionLogToolMentions,
compactMentions: codeLane.sessionLogToolMentions,
})