import { showToast, StdToastElement } from 'std:elements/toast'; // helper functions to keep tests from bleeding into each other const runTest = (testFn, name, toast, action) => { try { test(() => { testFn(toast, action); }, name); } finally { toast.remove(); } }; const runTestAsync = (testFn, name, toast) => { async_test(t => { testFn(t, toast); t.add_cleanup(() => { toast.remove(); }); }, name); }; export const testToastElement = (testFn, name) => { const toast = new StdToastElement('Message', {}); document.querySelector('main').appendChild(toast); runTest(testFn, name, toast); }; export const testToastElementAsync = (testFn, name) => { const toast = new StdToastElement('Message', {}); document.querySelector('main').appendChild(toast); runTestAsync(testFn, name, toast); }; export const testShowToast = (testFn, name) => { const toast = showToast("message"); runTest(testFn, name, toast); }; export const testActionToast = (testFn, name) => { const toast = new StdToastElement('Message', {}); const action = document.createElement('button'); action.setAttribute('slot', 'action'); action.textContent = 'action'; toast.appendChild(action); document.querySelector('main').appendChild(toast); runTest(testFn, name, toast, action); }; export const assertToastShown = (toast) => { assert_not_equals(window.getComputedStyle(toast).display, 'none'); assert_true(toast.hasAttribute('open')); assert_true(toast.open); }; export const assertToastNotShown = (toast) => { assert_equals(window.getComputedStyle(toast).display, 'none'); assert_false(toast.hasAttribute('open')); assert_false(toast.open); }; export const assertActionButtonOnToast = (action, toast) => { assert_equals(toast.action, action); assert_equals(action.getAttribute('slot'), 'action'); assert_equals(action, toast.querySelector('button')); }; export const assertComputedStyleMapsEqual = (element1, element2) => { assert_greater_than(element1.computedStyleMap().size, 0); for (const [styleProperty, baseStyleValues] of element1.computedStyleMap()) { const refStyleValues = element2.computedStyleMap().getAll(styleProperty); assert_equals(baseStyleValues.length, refStyleValues.length, `${styleProperty} length`); for (let i = 0; i < baseStyleValues.length; ++i) { const baseStyleValue = baseStyleValues[i]; const refStyleValue = refStyleValues[i]; assert_equals(baseStyleValue.toString(), refStyleValue.toString(), `diff at value ${styleProperty}`); } } } export class EventCollector { events = []; getCallback() { return (e) => {this.events.push(e)}; } getCount() { return this.events.length; } getEvents() { return this.events; } }