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