Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /css/css-cascade/scope-implicit-external.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<html>
<head>
<title>@scope - implicit scope root (external sheet)</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div class="a outside"></div>
<div id=main></div>
<div class="a outside"></div>
<template id=templateLink>
<div id=root>
<link id=importElement rel="stylesheet" href="resources/scope.css">
<div class=a></div>
</div>
</template>
<template id=templateImport>
<div id=root>
<style id="importElement">
@import url("resources/scope.css");
</style>
<div class=a></div>
</div>
</template>
<script>
function test_external(template_element, description) {
promise_test(async t => {
t.add_cleanup(() => main.replaceChildren());
const cloned = template_element.content.cloneNode(true);
const importElement = cloned.querySelector('#importElement');
const p = new Promise((resolve, reject) => importElement.addEventListener('load', () => {
try {
assert_equals(getComputedStyle(root).zIndex, '1');
assert_equals(getComputedStyle(document.querySelector('#root > .a')).zIndex, '2');
let outside = document.querySelectorAll('.outside');
assert_equals(outside.length, 2);
for (let div of outside) {
assert_equals(getComputedStyle(div).zIndex, 'auto');
}
resolve();
} catch(e) {
reject(e);
}
}));
main.append(cloned);
return p;
}, description);
}
test_external(templateLink, '@scope with external stylesheet through link element');
test_external(templateImport, '@scope with external stylesheet through @import');
</script>
</body>
</html>