From 8a28df44887656b80cda8ed0375f9726508abd38 Mon Sep 17 00:00:00 2001 From: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com> Date: Wed, 14 Oct 2026 03:27:51 +0000 Subject: [PATCH] test(mcp): leave comparison group completeness to the runtime parser 80de3145e stopped advertising `dependentRequired` and states input groups in the schema description instead. Passive captures with `normalization` and a single scenario side with `normalization` therefore satisfy the advertised projection, while the canonical parser still rejects them before any provider call. Classify them with the other mixed groups and assert the description carries the group guidance. Co-Authored-By: Claude Opus 5.5 --- .../mcp/browserComparisonInput.test.ts | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/tests/boundary/mcp/browserComparisonInput.test.ts b/tests/boundary/mcp/browserComparisonInput.test.ts index 0dba6faff..7e916c9f5 100644 --- a/tests/boundary/mcp/browserComparisonInput.test.ts +++ b/tests/boundary/mcp/browserComparisonInput.test.ts @@ -110,15 +110,6 @@ describe("browser comparison input boundary", () => { }, { before_scenario: {}, after_scenario: {} }, { before_scenario: scenario.before_scenario }, - { ...passive, normalization: { rules: [] } }, - { - before_scenario: scenario.before_scenario, - normalization: { rules: [] }, - }, - { - after_scenario: scenario.after_scenario, - normalization: { rules: [] }, - }, { ...passive, unexpected: true }, { ...scenario, @@ -133,8 +124,24 @@ describe("browser comparison input boundary", () => { }, }, ]; - // The projection leaves group exclusion to the canonical runtime parser. - const mixedGroups = [{ ...passive, ...scenario }]; + // Strict clients reject combinators and dependentRequired, so the + // projection states the groups in its description and leaves group + // completeness and exclusion to the canonical runtime parser. + expect(advertised.inputSchema.description).toContain( + "before + after; before_scenario + after_scenario + [normalization]", + ); + const mixedGroups = [ + { ...passive, ...scenario }, + { ...passive, normalization: { rules: [] } }, + { + before_scenario: scenario.before_scenario, + normalization: { rules: [] }, + }, + { + after_scenario: scenario.after_scenario, + normalization: { rules: [] }, + }, + ]; for (const { input, advertisedValid, runtimeValid } of [ ...[passive, scenario, withoutNormalization].map((input) => ({ input,