WPT
wpt / ai / language-model / language-model-tool-use.tentative.https.window.html
Runs: Chrome 155.0.8039.0 (wpt@d0c38285b, 2026-09-03) | Firefox 157.0a1 (wpt@ed1909ed6, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-56c61 (wpt@cc4d45aa0, 2026-09-03) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 0/45 | 0/45 | 0/45 | 0/45 | 0/45 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| createLanguageModel should reject when tool has null inputSchema. | TIMEOUT | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool inputSchema is empty object without type property. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool inputSchema is not an object. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool inputSchema has no type property. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool inputSchema type is not object. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool inputSchema properties is not an object. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool inputSchema required is not an array. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should propagate exception when inputSchema getter throws. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should propagate exception when inputSchema type getter throws. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool has empty name. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool has empty description. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tools array contains duplicate tool names. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool has no inputSchema. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tool has circular reference in inputSchema | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when all tools have circular references | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should propagate V8 exception from custom toJSON() | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should propagate V8 exception from custom getter during serialization | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should fail-fast when one tool among many is invalid | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel with schema containing invalid-JSON-like text (trailing commas, comments) as string content succeeds because JSON.stringify escapes properly | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should succeed with empty tools array. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should succeed with no tools property. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tools provided but expectedOutputs is missing. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should reject when tools provided but expectedOutputs does not include tool-call. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should succeed when tools provided with tool-call in expectedOutputs. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| createLanguageModel should succeed with tool-call in expectedOutputs but no tools. | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Caller-supplied tool calls preserve structured initial history and normalize empty arguments | NOTRUN | FAIL | — | FAIL | FAIL | — |
| append() and recreated sessions preserve caller-supplied tool-call history | NOTRUN | FAIL | — | FAIL | FAIL | — |
| Caller-supplied tool-call input rejects invalid arguments and unsupported sessions | NOTRUN | FAIL | — | FAIL | FAIL | — |
| prompt() should return structured tool call messages in open-loop pattern | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Open-loop pattern - send tool response via follow-up prompt | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool response with DOM object (ImageBitmap) labeled as type object should reject | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Multimodal tool response with ImageBitmap throws NotSupportedError | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Multimodal tool response with AudioBuffer throws NotSupportedError | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| promptStreaming() should stream tool call messages | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool with no arguments should have empty arguments object | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Multiple tools can be declared and called | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool response can include error field | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool response with circular reference should reject with DataError | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool response with function value should reject with DataError | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool response with BigInt value should reject with DataError | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Tool response with valid serializable values should succeed | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| Cloned model should preserve tools | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| prompt() returns both text and tool call in correct order when model outputs mixed response | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| prompt() should handle multiple batches of tool calls from model | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |
| promptStreaming() should handle multiple batches of tool calls from model | NOTRUN | FAIL | FAIL | FAIL | FAIL | — |