diff options
Diffstat (limited to 'testing/web-platform/tests/speech-api/SpeechSynthesis-pause-resume.tentative.html')
-rw-r--r-- | testing/web-platform/tests/speech-api/SpeechSynthesis-pause-resume.tentative.html | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/web-platform/tests/speech-api/SpeechSynthesis-pause-resume.tentative.html b/testing/web-platform/tests/speech-api/SpeechSynthesis-pause-resume.tentative.html new file mode 100644 index 0000000000..a7aa2bbf6f --- /dev/null +++ b/testing/web-platform/tests/speech-api/SpeechSynthesis-pause-resume.tentative.html @@ -0,0 +1,50 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<body> +<script> +// This test is tentative because timing isn't defined: +// https://github.com/w3c/speech-api/issues/39 +// https://github.com/w3c/speech-api/issues/40 +async_test(t => { + assert_false(speechSynthesis.paused, 'initial paused state'); + + test_driver.bless('speechSynthesis.speak', t.step_func(() => { + const sentence = `long sentence which will take at least a few seconds to + utter so that it's possible to pause and resume before the end`; + const utter = new SpeechSynthesisUtterance(sentence); + t.add_cleanup(() => speechSynthesis.pause()); + utter.onerror = t.unreached_func('error event'); + + speechSynthesis.speak(utter); + + assert_false(speechSynthesis.paused, 'paused state after speak()'); + + utter.onstart = t.step_func(() => { + utter.onstart = null; + assert_false(speechSynthesis.paused, 'paused state at start event'); + + speechSynthesis.pause(); + + // paused state changes async, right before the pause event + assert_false(speechSynthesis.paused, 'paused state after pause()'); + + utter.onpause = t.step_func(() => { + utter.onpause = null; + assert_true(speechSynthesis.paused, 'paused state at pause event'); + + speechSynthesis.resume(); + + // paused state changes async, right before the resume event + assert_true(speechSynthesis.paused, 'paused state after resume()'); + + utter.onresume = t.step_func_done(() => { + assert_false(speechSynthesis.paused, 'paused state at resume event'); + }); + }); + }); + })); +}, 'speechSynthesis.pause() and resume() state and events'); +</script> |