| <!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> |