Automatic update from web-platform-tests WebMCP: Remove the ModelContextTesting API This CL removes the ModelContextTesting API. It's a reland of https://crrev.com/c/7895790, which was reverted in https://crrev.com/c/7959699. The CL was reverted due to the `virtual/webmcp/inspector-protocol/webmcp/log-tool-calls.js` timing out on overloaded bots. That test originally asserted that the modelContextTesting API could abort a long-running (10 second!) tool. Since aborting a tool call for the production modelContext API is still in progress (see https://crbug.com/481899636), any CL replacing usages of modelContextTesting with modelContext has to accept that the long-running tool will run to completion, instead of being aborted correctly. On particularly busy bots, the 10-second tool could exceed the bot's timeout window, and fail with a timeout. This CL adjusts the 10-second tool to a 50-ms tool, so that it runs quickly. This is kind of fudging that particular inspector test, but the timeout will be reverted back to its long 10-second timeout once https://crrev.com/c/8025300 lands, implementing tool abort support for the production modelContext API. R=beaufort.francois@gmail.com, nasko Bug: 515272366 Change-Id: I695ad7479d1b90de3d1edb705e71532e4b160957 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8062045 Reviewed-by: Fr <beaufort.francois@gmail.com> Reviewed-by: Dave Tapuska <dtapuska@chromium.org> Commit-Queue: Dominic Farolino <dom@chromium.org> Cr-Commit-Position: refs/heads/main@{#1658818} -- wpt-commits: ed76dd926b0ca18aafb188452f9ccf746be8bff4 wpt-pr: 61137
66 lines
2.8 KiB
HTML
66 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>WebMCP: getTools() retrieves imperative schema at registration time</title>
|
|
<link rel="author" href="mailto:dom@chromium.org">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<body>
|
|
<script>
|
|
promise_test(async t => {
|
|
const tool = {
|
|
name: "search_tool",
|
|
description: "Search the web",
|
|
inputSchema: {
|
|
type: "object",
|
|
properties: {
|
|
query: {
|
|
type: "string",
|
|
description: "The search query",
|
|
},
|
|
limit: {
|
|
type: "number",
|
|
description: "Max results count",
|
|
},
|
|
safe_search: {
|
|
type: "boolean",
|
|
description: "Enable safe search filtering",
|
|
},
|
|
},
|
|
required: ["query"],
|
|
},
|
|
execute: () => {},
|
|
};
|
|
|
|
await document.modelContext.registerTool(tool);
|
|
|
|
const tools = await document.modelContext.getTools();
|
|
assert_equals(tools.length, 1, "Exactly one tool should be registered");
|
|
|
|
const registeredTool = tools[0];
|
|
assert_equals(registeredTool.name, "search_tool", "Tool name matches registered tool");
|
|
assert_equals(registeredTool.description, "Search the web", "Tool description matches registered tool");
|
|
|
|
assert_true(!!registeredTool.inputSchema, "inputSchema should be non-empty");
|
|
const schema = JSON.parse(registeredTool.inputSchema);
|
|
|
|
assert_equals(schema.type, "object", "Schema should be an object");
|
|
|
|
// 'query' property validation (required string)
|
|
assert_true("query" in schema.properties, "Schema should contain 'query' property");
|
|
assert_equals(schema.properties.query.type, "string", "Query property type should be string");
|
|
assert_equals(schema.properties.query.description, "The search query", "Query property description is correct");
|
|
assert_array_equals(schema.required, ["query"], "Query should be a required property");
|
|
|
|
// 'limit' property validation (optional number)
|
|
assert_true("limit" in schema.properties, "Schema should contain 'limit' property");
|
|
assert_equals(schema.properties.limit.type, "number", "Limit property type should be number");
|
|
assert_equals(schema.properties.limit.description, "Max results count", "Limit property description is correct");
|
|
|
|
// 'safe_search' property validation (optional boolean)
|
|
assert_true("safe_search" in schema.properties, "Schema should contain 'safe_search' property");
|
|
assert_equals(schema.properties.safe_search.type, "boolean", "safe_search property type should be boolean");
|
|
assert_equals(schema.properties.safe_search.description, "Enable safe search filtering", "safe_search property description is correct");
|
|
}, "Test that getTools() returns the correct inputSchema for an imperative tool");
|
|
</script>
|
|
</body>
|