Status: FAIL | Duration: 50ms | 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 |
|---|---|---|
| Appending a rule | FAIL | assert_equals: expected "10px" but got "42px" |
| Prepending a rule | FAIL | assert_equals: expected "10px" but got "42px" |
| Deleting a rule | FAIL | |
| Prepending a rule, then deleting last | FAIL |
/css/css-mixins/functions/function-invalidation.html
<!DOCTYPE html> <title>CSS Custom Functions: Invalidation when @function rules change</title> <link rel="help" href="https://drafts.csswg.org/css-mixins-1/#cssom"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <!-- This stylesheet will be mutated during testing. --> <style id=mutable_style> @function --f() { result: 10px; } </style> <style> #outer { width: 42px; } #target { width: --f(); } </style> <div id=outer> <div> <div id=target> </div> </div> <div> <script> // Adds a cleanup step to recreate `original_element` in-place // (with the original text). function add_cleanup(t, original_element) { let original_text = original_element.textContent; t.add_cleanup(() => { let new_element = document.createElement('style'); new_element.setAttribute('id', 'mutable_style'); new_element.textContent = original_text; original_element.parentElement.replaceChild(new_element, original_element); }); } test(t => { add_cleanup(t, mutable_style); let sheet = mutable_style.sheet; assert_equals(getComputedStyle(target).width, '10px'); sheet.insertRule('@function --f() { result: 20px; }', 1); assert_equals(getComputedStyle(target).width, '20px'); }, 'Appending a rule'); test(t => { add_cleanup(t, mutable_style); let sheet = mutable_style.sheet; assert_equals(getComputedStyle(target).width, '10px'); sheet.insertRule('@function --f() { result: 20px; }', 0); assert_equals(getComputedStyle(target).width, '10px'); // No change. }, 'Prepending a rule'); test(t => { add_cleanup(t, mutable_style); let sheet = mutable_style.sheet; assert_equals(getComputedStyle(target).width, '10px'); sheet.deleteRule(0); assert_equals(getComputedStyle(target).width, '42px'); }, 'Deleting a rule'); test(t => { add_cleanup(t, mutable_style); let sheet = mutable_style.sheet; assert_equals(getComputedStyle(target).width, '10px'); sheet.insertRule('@function --f() { result: 20px; }', 0); assert_equals(getComputedStyle(target).width, '10px'); sheet.deleteRule(1); assert_equals(getComputedStyle(target).width, '20px'); }, 'Prepending a rule, then deleting last'); </script>