blob: 981b9fba4341e5798c7456e02da53e97bd1369f3 [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<title>Toast: method tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<main></main>
<div></div>
<script type="module">
import { testToastElement, assertToastShown, assertToastNotShown, testToastElementAsync } from './resources/helpers.js';
testToastElement((toast) => {
toast.show();
assertToastShown(toast);
}, 'calling `show()` on a hidden toast opens and displays it');
testToastElement((toast) => {
toast.toggleAttribute('open');
toast.show();
assertToastShown(toast);
}, 'calling `show()` on a shown toast does nothing');
testToastElement((toast) => {
toast.toggleAttribute('open');
toast.hide();
assertToastNotShown(toast);
}, 'calling `hide()` on a shown toast hides the toast');
testToastElement((toast) => {
toast.hide();
assertToastNotShown(toast);
}, 'calling `hide()` on a hidden toast does nothing');
testToastElement((toast) => {
toast.toggle();
assertToastShown(toast);
}, 'calling `toggle()` on a hidden toast shows the toast');
testToastElement((toast) => {
toast.show();
toast.toggle();
assertToastNotShown(toast);
}, 'calling `toggle()` on a shown toast hides the toast');
testToastElement((toast) => {
toast.toggle(true);
assertToastShown(toast);
}, 'calling `toggle()` with `force` parameter set to true on a hidden opens the toast');
testToastElement((toast) => {
toast.show();
toast.toggle(true);
assertToastShown(toast);
}, 'calling `toggle()` with `force` parameter set to true on a shown toast does not close the toast');
testToastElement((toast) => {
toast.toggle(false);
assertToastNotShown(toast);
}, 'calling `toggle()` with `force` parameter set to false on a hidden toast does not open the toast');
testToastElement((toast) => {
toast.show();
toast.toggle(false);
assertToastNotShown(toast);
}, 'calling `toggle()` with `force` parameter set to false on a shown toast closes the toast');
testToastElementAsync((t, toast) => {
toast.show({duration: 50});
// time = 49
t.step_timeout(() => {
assertToastShown(toast);
toast.show({duration: 50});
// time = 98
t.step_timeout(() => {
assertToastShown(toast);
// time = 99
t.step_timeout(() => {
assertToastNotShown(toast);
t.done();
}, 1000);
}, 49);
}, 49);
}, 'calling `show()` twice resets the timeout');
testToastElementAsync((t, toast) => {
toast.show({duration: 50});
// time = 48
t.step_timeout(() => {
assertToastShown(toast);
toast.hide();
// time = 49
t.step_timeout(() => {
assertToastNotShown(toast);
// time = 50
t.step_timeout(() => {
toast.show({duration: 2});
// time = 51
t.step_timeout(() => {
assertToastShown(toast);
toast.hide();
t.done();
}, 1);
}, 1);
}, 1);
}, 48);
}, 'calling `hide()` clears the timeout');
</script>