Status: FAIL | Duration: 46ms | Subtests: 0/4 | Open test on wpt.live | wpt.fyi
Data from commit:
a50cb89 wpt: run reference-named files which are themselves tests (#836) (2026-09-03)
| Subtest | Status | Message |
|---|---|---|
| @keyframes is unaffected by @scope | FAIL | animating is not defined |
| @keyframes is unaffected by non-matching @scope | FAIL | animating is not defined |
| @property is unaffected by @scope | FAIL | subject is not defined |
| @property is unaffected by non-matching @scope | FAIL | subject is not defined |
/css/css-cascade/scope-name-defining-rules.html
<!DOCTYPE html> <title>@scope - name-defining at-rules</title> <link rel="help" href="https://drafts.csswg.org/css-cascade-5/#scope-scope"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <main id=main></main> <template id=test_keyframes> <style> @scope (#inner) { @keyframes --my-anim { from { background-color: rgb(0, 0, 255); } to { background-color: rgb(0, 0, 255); } } } @scope (#outer) { @keyframes --my-anim { from { background-color: rgb(0, 128, 0); } to { background-color: rgb(0, 128, 0); } } } #animating { animation: --my-anim 1000s linear; } </style> <div id=outer> <div id=inner> <div id=animating></div> <div> </div> </template> <script> test((t) => { main.append(test_keyframes.content.cloneNode(true)); t.add_cleanup(() => main.replaceChildren()); assert_equals(getComputedStyle(animating).backgroundColor, 'rgb(0, 128, 0)'); }, '@keyframes is unaffected by @scope'); </script> <template id=test_keyframes_non_matching> <style> @scope (#nomatch) { @keyframes --my-anim { from { background-color: rgb(0, 128, 0); } to { background-color: rgb(0, 128, 0); } } } #animating { animation: --my-anim 1000s linear; } </style> <div id=animating></div> </template> <script> test((t) => { main.append(test_keyframes_non_matching.content.cloneNode(true)); t.add_cleanup(() => main.replaceChildren()); assert_equals(getComputedStyle(animating).backgroundColor, 'rgb(0, 128, 0)'); }, '@keyframes is unaffected by non-matching @scope'); </script> <template id=test_property> <style> @scope (#inner) { @property --my-prop { syntax: "<length>"; initial-value: 1px; inherits: false; } } @scope (#outer) { @property --my-prop { syntax: "<length>"; initial-value: 2px; inherits: false; } } </style> <div id=outer> <div id=inner> <div id=subject></div> <div> </div> </template> <script> test((t) => { main.append(test_property.content.cloneNode(true)); t.add_cleanup(() => main.replaceChildren()); assert_equals(getComputedStyle(subject).getPropertyValue('--my-prop'), '2px'); }, '@property is unaffected by @scope'); </script> <template id=test_property_non_matching> <style> @scope (#nomatch) { @property --my-prop { syntax: "<length>"; initial-value: 2px; inherits: false; } } </style> <div id=subject></div> </template> <script> test((t) => { main.append(test_property_non_matching.content.cloneNode(true)); t.add_cleanup(() => main.replaceChildren()); assert_equals(getComputedStyle(subject).getPropertyValue('--my-prop'), '2px'); }, '@property is unaffected by non-matching @scope'); </script>