blob: 1db8620485dc459577649e0c2689194d106dcc51 [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<title>Toast: style tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<main>
</main>
<script type="module">
import { testToastElement, assertComputedStyleMapsEqual } from './resources/helpers.js';
testToastElement((toast) => {
toast.open = true;
const mockToast = document.createElement('span');
mockToast.id = 'mock-toast-open';
mockToast.textContent = 'Message';
const mockStyler = document.createElement('style');
mockStyler.textContent = `
#mock-toast-open {
position: fixed;
bottom: 1em;
right: 1em;
border: solid;
padding: 1em;
background: white;
color: black;
z-index: 1;
}`;
document.querySelector('main').appendChild(mockStyler);
document.querySelector('main').appendChild(mockToast);
assertComputedStyleMapsEqual(toast, mockToast);
}, 'the computed style map of an open unstyled toast is the same as a span given toast defaults');
testToastElement((toast) => {
const mockToast = document.createElement('span');
mockToast.id = 'mock-toast-hidden';
mockToast.textContent = 'Message';
const mockStyler = document.createElement('style');
mockStyler.textContent = `
#mock-toast-hidden {
position: fixed;
bottom: 1em;
right: 1em;
border: solid;
padding: 1em;
background: white;
color: black;
z-index: 1;
display: none;
}`;
document.querySelector('main').appendChild(mockStyler);
document.querySelector('main').appendChild(mockToast);
assertComputedStyleMapsEqual(toast, mockToast);
}, 'the computed style map of a closed unstyled toast is the same as a span given toast defaults');
testToastElement((toast) => {
toast.type = 'error';
const styles = window.getComputedStyle(toast);
assert_equals(styles.borderColor, 'rgb(255, 0, 0)');
}, 'changing type to error changes the border color to red');
testToastElement((toast) => {
toast.type = 'warning';
const styles = window.getComputedStyle(toast);
assert_equals(styles.borderColor, 'rgb(255, 165, 0)');
}, 'changing type to warning changes the border color to orange');
testToastElement((toast) => {
toast.type = 'success';
const styles = window.getComputedStyle(toast);
assert_equals(styles.borderColor, 'rgb(0, 128, 0)');
}, 'changing type to success changes the border color to green');
testToastElement((toast) => {
const styler = document.createElement('style');
styler.append(`
[type=error i] {
border-color: pink;
}
`);
document.querySelector('main').appendChild(styler);
toast.type = 'error';
const styles = window.getComputedStyle(toast);
assert_equals(styles.borderColor, 'rgb(255, 192, 203)');
}, 'outside styles can set type styles');
</script>