46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
// META: title=Rewriter Rewrite Streaming
|
|
// META: script=/resources/testdriver.js
|
|
// META: script=../resources/util.js
|
|
// META: timeout=long
|
|
|
|
'use strict';
|
|
|
|
promise_test(async () => {
|
|
const rewriter = await createRewriter();
|
|
const streamingResponse =
|
|
rewriter.rewriteStreaming(kTestPrompt, { context: kTestContext });
|
|
assert_equals(
|
|
Object.prototype.toString.call(streamingResponse),
|
|
'[object ReadableStream]');
|
|
let result = '';
|
|
for await (const chunk of streamingResponse) {
|
|
result += chunk;
|
|
}
|
|
assert_greater_than(result.length, 0);
|
|
}, 'Simple Rewriter.rewriteStreaming() call');
|
|
|
|
promise_test(async (t) => {
|
|
const rewriter = await createRewriter();
|
|
rewriter.destroy();
|
|
assert_throws_dom(
|
|
'InvalidStateError', () => rewriter.rewriteStreaming(kTestPrompt));
|
|
}, 'Rewriter.rewriteStreaming() fails after destroyed');
|
|
|
|
promise_test(async t => {
|
|
const rewriter = await createRewriter();
|
|
const streamingResponse = rewriter.rewriteStreaming('');
|
|
assert_equals(
|
|
Object.prototype.toString.call(streamingResponse),
|
|
"[object ReadableStream]"
|
|
);
|
|
const { result, done } = await streamingResponse.getReader().read();
|
|
assert_true(done);
|
|
}, 'Rewriter.rewriteStreaming() returns a ReadableStream without any chunk on an empty input');
|
|
|
|
promise_test(async () => {
|
|
const rewriter = await createRewriter();
|
|
await Promise.all([
|
|
rewriter.rewriteStreaming(kTestPrompt),
|
|
rewriter.rewriteStreaming(kTestPrompt)
|
|
]);
|
|
}, 'Multiple Rewriter.rewriteStreaming() calls are resolved successfully');
|