tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

summarizer-summarize-streaming.tentative.https.window.js (2200B)


      1 // META: title=Summarizer Summarize Streaming
      2 // META: script=/common/gc.js
      3 // META: script=/resources/testdriver.js
      4 // META: script=../resources/util.js
      5 // META: timeout=long
      6 
      7 'use strict';
      8 
      9 promise_test(async t => {
     10  const summarizer = await createSummarizer();
     11  const streamingResponse = summarizer.summarizeStreaming(kTestPrompt);
     12  assert_equals(
     13    Object.prototype.toString.call(streamingResponse),
     14    "[object ReadableStream]"
     15  );
     16  let result = '';
     17  for await (const chunk of streamingResponse) {
     18    result += chunk;
     19  }
     20  assert_greater_than(result.length, 0);
     21 }, 'Simple Summarizer.summarizeStreaming() call');
     22 
     23 promise_test(async (t) => {
     24  const summarizer = await createSummarizer();
     25  const stream = summarizer.summarizeStreaming(kTestPrompt);
     26 
     27  summarizer.destroy();
     28 
     29  await promise_rejects_dom(
     30    t, 'AbortError', stream.pipeTo(new WritableStream()));
     31 }, 'Summarizer.summarizeStreaming() fails after destroyed');
     32 
     33 promise_test(async t => {
     34  const summarizer = await createSummarizer();
     35  const streamingResponse = summarizer.summarizeStreaming('');
     36  assert_equals(
     37    Object.prototype.toString.call(streamingResponse),
     38    "[object ReadableStream]"
     39  );
     40  const { result, done } = await streamingResponse.getReader().read();
     41  assert_true(done);
     42 }, 'Summarizer.summarizeStreaming() returns a ReadableStream without any chunk on an empty input');
     43 
     44 promise_test(async () => {
     45  const summarizer = await createSummarizer();
     46  await Promise.all([
     47    summarizer.summarizeStreaming(kTestPrompt),
     48    summarizer.summarizeStreaming(kTestPrompt)
     49  ]);
     50 }, 'Multiple Summarizer.summarizeStreaming() calls are resolved successfully');
     51 
     52 promise_test(async t => {
     53  const summarizer = await createSummarizer();
     54  const streamingResponse = summarizer.summarizeStreaming(kTestPrompt);
     55  garbageCollect();
     56  assert_equals(Object.prototype.toString.call(streamingResponse),
     57                '[object ReadableStream]');
     58  let result = '';
     59  for await (const value of streamingResponse) {
     60    result += value;
     61    garbageCollect();
     62  }
     63 assert_greater_than(result.length, 0, 'The result should not be empty.');
     64 }, 'Summarize Streaming API must continue even after GC has been performed.');