mirror of
https://github.com/servo/servo.git
synced 2025-06-29 19:43:39 +01:00
101 lines
2.9 KiB
JavaScript
101 lines
2.9 KiB
JavaScript
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;
|
|
}
|
|
}
|