mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-19 23:01:40 +00:00
* 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
95 lines
3.4 KiB
YAML
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,
|
|
})
|