diff --git a/src/browser/PlaywrightElectronActiveActions.test.ts b/src/browser/PlaywrightElectronActiveActions.test.ts index 63d0a5e73..9c6c204b8 100644 --- a/src/browser/PlaywrightElectronActiveActions.test.ts +++ b/src/browser/PlaywrightElectronActiveActions.test.ts @@ -61,6 +61,25 @@ it("rejects non-absolute deep-link values", () => { expect(result.success).toBe(false); }); +it("accepts any argument count while validating each argument", () => { + const input = electronActiveObservationInputSchema.parse({ + executable_path: "/opt/electron", + application_path: "/opt/app/main.js", + application_root: "/opt/app", + args: Array.from({ length: 40 }, (_, index) => `--flag-${index}`), + }); + + expect(input.args).toHaveLength(40); + expect( + electronActiveObservationInputSchema.safeParse({ + executable_path: "/opt/electron", + application_path: "/opt/app/main.js", + application_root: "/opt/app", + args: ["x".repeat(4_097)], + }).success, + ).toBe(false); +}); + it("redacts action inputs from Playwright failures", async () => { const selector = "#secret-selector"; const input = electronActiveObservationInputSchema.parse({ diff --git a/tests/boundary/mcp/browserScenarioMcp.test.ts b/tests/boundary/mcp/browserScenarioMcp.test.ts index 35a7ddda3..f9de119f4 100644 --- a/tests/boundary/mcp/browserScenarioMcp.test.ts +++ b/tests/boundary/mcp/browserScenarioMcp.test.ts @@ -208,7 +208,7 @@ describe("browser scenario MCP tool", () => { ], }, capture: { after_each_step: [], at_end: ["url"], events: [] }, - limits: { max_duration_ms: 60_000, max_total_metadata_bytes: 4_194_304 }, + limits: { max_duration_ms: 60_000 }, }); const captured = await client.callTool({ diff --git a/tests/boundary/mcp/serverIdentity.test.ts b/tests/boundary/mcp/serverIdentity.test.ts index f6a711fa5..ec512b5a9 100644 --- a/tests/boundary/mcp/serverIdentity.test.ts +++ b/tests/boundary/mcp/serverIdentity.test.ts @@ -243,7 +243,7 @@ const assertLiveIdentity = async (client: Client): Promise => { "For standalone JavaScript or ASAR analysis, use analyze_javascript_application", ); expect(instructions).toContain( - "For an archive or application package, call open_binary(path), then inspect_artifact", + "For an archive or application package, open_binary(path) binds the active target; use inspect_artifact when its graph and findings help", ); const identity = await client.callTool({ name: "binary_session", diff --git a/tests/boundary/mcp/sessionMcp.test.ts b/tests/boundary/mcp/sessionMcp.test.ts index e2eec91a1..81b82b224 100644 --- a/tests/boundary/mcp/sessionMcp.test.ts +++ b/tests/boundary/mcp/sessionMcp.test.ts @@ -116,7 +116,7 @@ describe("target-free MCP workflow", () => { const beforeTools = (await mcp.listTools()).tools; const beforeNames = beforeTools.map(({ name }) => name); expect(mcp.getInstructions()).toContain( - "For an archive or application package, call open_binary(path), then inspect_artifact", + "For an archive or application package, open_binary(path) binds the active target; use inspect_artifact when its graph and findings help", ); expect( beforeTools.find(({ name }) => name === "inspect_artifact")?.description,