Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

// META: title=Translator Translate Streaming Post-Abort
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=../resources/util.js
// META: script=resources/util.js
// META: timeout=long
'use strict';
promise_test(async t => {
const translator = await createTranslator({ sourceLanguage: 'en', targetLanguage: 'ja' });
const controller = new AbortController();
const stream = translator.translateStreaming('hello', { signal: controller.signal });
controller.abort();
await promise_rejects_dom(t, 'AbortError', stream.pipeTo(new WritableStream()));
// Translate again on the same session to ensure it is still usable.
const streamingResponse = translator.translateStreaming('hello');
assert_true(streamingResponse instanceof ReadableStream);
const result = (await Array.fromAsync(streamingResponse)).join('');
assert_greater_than(result.length, 0, 'The result should not be empty.');
}, "Translate after aborting a previous translateStreaming.");