Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/toolkit/components/narrate/test/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 5 kB image not shown  

Quelle  browser_narrate.js   Sprache: JAVA

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


"use strict";

registerCleanupFunction(teardown);

add_task(async function testNarrate() {
  setup();

  await spawnInNewReaderTab(TEST_ARTICLE, async function () {
    let TEST_VOICE = "urn:moz-tts:fake:teresa";
    let $ = content.document.querySelector.bind(content.document);

    await NarrateTestUtils.waitForNarrateToggle(content);

    let popup = $(NarrateTestUtils.POPUP);
    ok(!NarrateTestUtils.isVisible(popup), "popup is initially hidden");

    let toggle = $(NarrateTestUtils.TOGGLE);
    toggle.click();

    ok(NarrateTestUtils.isVisible(popup), "popup toggled");

    let voiceOptions = $(NarrateTestUtils.VOICE_OPTIONS);
    ok(
      !NarrateTestUtils.isVisible(voiceOptions),
      "voice options are initially hidden"
    );

    $(NarrateTestUtils.VOICE_SELECT).click();
    ok(NarrateTestUtils.isVisible(voiceOptions), "voice options pop up");

    let prefChanged = NarrateTestUtils.waitForPrefChange("narrate.voice");
    ok(
      NarrateTestUtils.selectVoice(content, TEST_VOICE),
      "test voice selected"
    );
    await prefChanged;

    ok(!NarrateTestUtils.isVisible(voiceOptions), "voice options hidden again");

    NarrateTestUtils.isStoppedState(content, ok);

    let promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart");
    $(NarrateTestUtils.START).click();
    let speechinfo = (await promiseEvent).detail;
    is(speechinfo.voice, TEST_VOICE, "correct voice is being used");
    let paragraph = speechinfo.paragraph;

    NarrateTestUtils.isStartedState(content, ok);

    promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart");
    $(NarrateTestUtils.FORWARD).click();
    speechinfo = (await promiseEvent).detail;
    is(speechinfo.voice, TEST_VOICE, "same voice is used");
    isnot(speechinfo.paragraph, paragraph, "next paragraph is being spoken");

    NarrateTestUtils.isStartedState(content, ok);

    promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart");
    $(NarrateTestUtils.BACK).click();
    speechinfo = (await promiseEvent).detail;
    is(speechinfo.paragraph, paragraph, "first paragraph being spoken");

    NarrateTestUtils.isStartedState(content, ok);

    paragraph = speechinfo.paragraph;
    $(NarrateTestUtils.STOP).click();
    await ContentTaskUtils.waitForCondition(
      () => !$(NarrateTestUtils.STOP),
      "transitioned to stopped state"
    );
    NarrateTestUtils.isStoppedState(content, ok);

    promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart");
    $(NarrateTestUtils.START).click();
    speechinfo = (await promiseEvent).detail;
    is(speechinfo.paragraph, paragraph, "read same paragraph again");

    NarrateTestUtils.isStartedState(content, ok);

    let eventUtils = NarrateTestUtils.getEventUtils(content);

    promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart");
    prefChanged = NarrateTestUtils.waitForPrefChange("narrate.rate");
    $(NarrateTestUtils.RATE).focus();
    eventUtils.sendKey("UP", content);
    let newspeechinfo = (await promiseEvent).detail;
    is(newspeechinfo.paragraph, speechinfo.paragraph, "same paragraph");
    isnot(newspeechinfo.rate, speechinfo.rate, "rate changed");
    await prefChanged;

    promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphend");
    $(NarrateTestUtils.STOP).click();
    await promiseEvent;

    await ContentTaskUtils.waitForCondition(
      () => !$(NarrateTestUtils.STOP),
      "transitioned to stopped state"
    );
    NarrateTestUtils.isStoppedState(content, ok);

    promiseEvent = ContentTaskUtils.waitForEvent(content, "scroll");
    content.scrollBy(0, 10);
    await promiseEvent;
    ok(!NarrateTestUtils.isVisible(popup), "popup is hidden after scroll");

    toggle.click();
    ok(NarrateTestUtils.isVisible(popup), "popup is toggled again");

    promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart");
    $(NarrateTestUtils.START).click();
    await promiseEvent;
    NarrateTestUtils.isStartedState(content, ok);

    promiseEvent = ContentTaskUtils.waitForEvent(content, "scroll");
    content.scrollBy(0, -10);
    await promiseEvent;
    ok(NarrateTestUtils.isVisible(popup), "popup stays visible after scroll");

    toggle.click();
    ok(!NarrateTestUtils.isVisible(popup), "popup is dismissed while speaking");
    NarrateTestUtils.isStartedState(content, ok);

    // Go forward all the way to the end of the article. We should eventually
    // stop.
    do {
      promiseEvent = Promise.race([
        ContentTaskUtils.waitForEvent(content, "paragraphstart"),
        ContentTaskUtils.waitForEvent(content, "paragraphsdone"),
      ]);
      $(NarrateTestUtils.FORWARD).click();
    } while ((await promiseEvent).type == "paragraphstart");

    // This is to make sure we are not actively scrolling when the tab closes.
    content.scroll(0, 0);

    await ContentTaskUtils.waitForCondition(
      () => !$(NarrateTestUtils.STOP),
      "transitioned to stopped state"
    );
    NarrateTestUtils.isStoppedState(content, ok);
  });
});

Messung V0.5
C=97 H=84 G=90

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.