From 52c84f6f58fa3cc7b39326654c6d3f261f957957 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Wed, 21 Oct 2026 06:23:20 +0800 Subject: [PATCH] test(cli): bound ADB MCP validation to the advertised tool Reuse the exact selected advertised descriptor for SDK output validation instead of compiling the entire cached catalog for every fresh parity-test client. Retain actual catalog discovery, schema validation, and all result assertions under the existing worker heap limit. --- tests/boundary/cli/adbUninstallScope.test.ts | 8 ++++---- tests/boundary/cli/adbWindowDisplays.test.ts | 8 ++++---- tests/boundary/cli/adbWindowFocus.test.ts | 8 ++++---- tests/fixtures/advertisedMcpTool.ts | 8 +++++++- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/tests/boundary/cli/adbUninstallScope.test.ts b/tests/boundary/cli/adbUninstallScope.test.ts index ffa8683235..2ae0c295b3 100644 --- a/tests/boundary/cli/adbUninstallScope.test.ts +++ b/tests/boundary/cli/adbUninstallScope.test.ts @@ -60,10 +60,10 @@ if (args.length === 1 && args[0] === 'version') { harness.client, "uninstall_adb_package", ); - const response = await harness.client.callTool({ - name: schemas.name, - arguments: input, - }); + const response = await harness.client.callTool( + { name: schemas.name, arguments: input }, + { toolDefinition: schemas.toolDefinition }, + ); if (succeeds) { const evidence = parseEvidence(output.json); expect(evidence.normalized_result).toMatchObject({ diff --git a/tests/boundary/cli/adbWindowDisplays.test.ts b/tests/boundary/cli/adbWindowDisplays.test.ts index 0aa4f5c724..6718ed93f3 100644 --- a/tests/boundary/cli/adbWindowDisplays.test.ts +++ b/tests/boundary/cli/adbWindowDisplays.test.ts @@ -56,10 +56,10 @@ if (args.length === 1 && args[0] === 'version') { harness.client, "inspect_adb_window", ); - const response = await harness.client.callTool({ - name: schemas.name, - arguments: { serial }, - }); + const response = await harness.client.callTool( + { name: schemas.name, arguments: { serial } }, + { toolDefinition: schemas.toolDefinition }, + ); expect(response.isError).not.toBe(true); expect( schemas.ajv.validate(schemas.outputSchema, response.structuredContent), diff --git a/tests/boundary/cli/adbWindowFocus.test.ts b/tests/boundary/cli/adbWindowFocus.test.ts index d54163ceb7..4a0b89a44d 100644 --- a/tests/boundary/cli/adbWindowFocus.test.ts +++ b/tests/boundary/cli/adbWindowFocus.test.ts @@ -76,10 +76,10 @@ exit 1 ); const args = { serial }; expect(schemas.ajv.validate(schemas.inputSchema, args)).toBe(true); - const response = await harness.client.callTool({ - name: schemas.name, - arguments: args, - }); + const response = await harness.client.callTool( + { name: schemas.name, arguments: args }, + { toolDefinition: schemas.toolDefinition }, + ); expect(response.isError).not.toBe(true); expect( schemas.ajv.validate(schemas.outputSchema, response.structuredContent), diff --git a/tests/fixtures/advertisedMcpTool.ts b/tests/fixtures/advertisedMcpTool.ts index 854d272ba4..55521941de 100644 --- a/tests/fixtures/advertisedMcpTool.ts +++ b/tests/fixtures/advertisedMcpTool.ts @@ -20,7 +20,13 @@ export const advertisedMcpToolSchemas = async ( const outputSchema: Record = advertised.outputSchema; expect(ajv.validateSchema(inputSchema)).toBe(true); expect(ajv.validateSchema(outputSchema)).toBe(true); - return { name: advertised.name, ajv, inputSchema, outputSchema }; + return { + name: advertised.name, + toolDefinition: advertised, + ajv, + inputSchema, + outputSchema, + }; }; /** Keep public output, provenance and session retention checks together. */