Files
sousa-gecko/testing/web-platform/tests/ai/writer/writer-write-streaming.tentative.https.window.js
T
Mike Wasserman 2b1a123436 Bug 2049632 [wpt PR 60813] - Built-In AI APIs: Add WPTs for session use after request cancellation, a=testonly
Automatic update from web-platform-tests
Built-In AI APIs: Add WPTs for session use after request cancellation

Add tests for each API and LanguageModel multimodal tests.
Expect translator flakes for now; cleanup expectations.

Bug: 523417395, 452743283, 525227294
Change-Id: I4e61aa3e8b8f16d1b0a643b8d555bc3b4e573073
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7959899
Reviewed-by: Isaac Ahouma <iahouma@google.com>
Commit-Queue: Mike Wasserman <msw@chromium.org>
Auto-Submit: Mike Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1650482}

--

wpt-commits: 41a24745b05e369e3925ff9c8f59302e85dad218
wpt-pr: 60813
2026-06-25 17:03:16 +00:00

55 lines
1.9 KiB
JavaScript

// META: title=Writer Write Streaming
// META: script=/common/gc.js
// META: script=/resources/testdriver.js
// META: script=../resources/util.js
// META: timeout=long
'use strict';
promise_test(async () => {
const writer = await createWriter();
const streamingResponse = writer.writeStreaming(kTestPrompt);
assert_true(streamingResponse instanceof ReadableStream);
const result = (await Array.fromAsync(streamingResponse)).join('');
assert_greater_than(result.length, 0, 'The result should not be empty.');
}, 'Simple Writer.writeStreaming() call');
promise_test(async (t) => {
const writer = await createWriter();
const stream = writer.writeStreaming(kTestPrompt);
writer.destroy();
await promise_rejects_dom(
t, 'AbortError', stream.pipeTo(new WritableStream()));
}, 'Writer.writeStreaming() fails after destroyed');
promise_test(async t => {
const writer = await createWriter();
const streamingResponse = writer.writeStreaming('');
assert_true(streamingResponse instanceof ReadableStream);
const { result, done } = await streamingResponse.getReader().read();
assert_true(done);
}, 'Writer.writeStreaming() returns a ReadableStream without any chunk on an empty input');
promise_test(async () => {
const writer = await createWriter();
await Promise.all([
writer.writeStreaming(kTestPrompt),
writer.writeStreaming(kTestPrompt)
]);
}, 'Multiple Writer.writeStreaming() calls are resolved successfully');
promise_test(async () => {
const writer = await createWriter();
const streamingResponse = writer.writeStreaming(kTestPrompt);
garbageCollect();
assert_true(streamingResponse instanceof ReadableStream);
let result = '';
for await (const value of streamingResponse) {
result += value;
garbageCollect();
}
assert_greater_than(result.length, 0, 'The result should not be empty.');
}, 'Write Streaming API must continue even after GC has been performed.');