Status: FAIL | Duration: 55ms | Subtests: 0/11 | 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 |
|---|---|---|
| @function works inside shadow | FAIL | assert_true: expected true got false |
| Looking up document-global function | FAIL | assert_true: expected true got false |
| @function works inside nested shadow | FAIL | assert_true: expected true got false |
| @function defined in outer shadow is visible | FAIL | assert_true: expected true got false |
| Combining functions from various scopes | FAIL | assert_true: expected true got false |
| ::part() can not see inner functions | FAIL | assert_true: expected true got false |
| ::slotted() can see inner functions | FAIL | assert_true: expected true got false |
| :host can see inner functions | FAIL | assert_true: expected true got false |
| Outer functions can't see inner functions | FAIL | assert_true: expected true got false |
| Outer functions can't see inner functions (local vars) | FAIL | assert_true: expected true got false |
| Function with same name in different scopes | FAIL | assert_true: expected true got false |
/css/css-mixins/functions/function-shadow.html
<!DOCTYPE html> <title>Custom Functions: ShadowDOM</title> <link rel="help" href="https://drafts.csswg.org/css-mixins-1/#using-custom-functions"> <link rel="help" href="https://drafts.csswg.org/css-shadow-1/#css-tree-scoped-reference"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="../resources/utils.js"></script> <style> @function --a() { result: 42px; } </style> <!-- Each element <div data-name="test case name"> represents a test. Inside each such element (including all shadow trees), there must be an element #target, with identical computed values for --actual and --expected. --> <div data-name="@function works inside shadow"> <template shadowrootmode=open> <style> @function --a() { result: 10px; } #target { --actual: --a(); --expected: 10px; } </style> <div id=target></div> </template> </div> <div data-name="Looking up document-global function"> <template shadowrootmode=open> <style> #target { --actual: --a(); --expected: 42px; } </style> <div id=target></div> </template> </div> <div data-name="@function works inside nested shadow"> <template shadowrootmode=open> <div> <template shadowrootmode=open> <style> @function --a() { result: 11px; } #target { --actual: --a(); --expected: 11px; } </style> <div id=target></div> </template> </div> </template> </div> <div data-name="@function defined in outer shadow is visible"> <template shadowrootmode=open> <style> @function --a() { result: 12px; } </style> <div> <template shadowrootmode=open> <style> #target { --actual: --a(); --expected: 12px; } </style> <div id=target></div> </template> </div> </template> </div> <div data-name="Combining functions from various scopes"> <template shadowrootmode=open> <style> @function --b() { result: B; } </style> <div> <template shadowrootmode=open> <style> @function --c() { result: C; } #target { --actual: --a() --b() --c(); --expected: 42px B C; } </style> <div id=target></div> </template> </div> </template> </div> <div data-name="::part() can not see inner functions"> <template shadowrootmode=open> <style> @function --b() { result: 14px; } ::part(target) { --actual: --a() --b(); --expected: 42px 14px; } </style> <div> <template shadowrootmode=open> <style> @function --a() { result: FAIL-a; } @function --b() { result: FAIL-b; } </style> <div id=target part=target></div> </template> </div> </template> </div> <div data-name="::slotted() can see inner functions"> <template shadowrootmode=open> <style> @function --b() { result: 16px; } </style> <div> <template shadowrootmode=open> <style> @function --c() { result: 15px; } ::slotted(#target) { --actual: --a() --b() --c(); --expected: 42px 16px 15px; } </style> <slot></slot> </template> <div id=target></div> </div> </template> </div> <div data-name=":host can see inner functions"> <template shadowrootmode=open> <style> @function --b() { result: 17px; } </style> <div id=target> <template shadowrootmode=open> <style> @function --c() { result: 18px; } :host { --actual: --a() --b() --c(); --expected: 42px 17px 18px; } </style> </template> </div> </template> </div> <div data-name="Outer functions can't see inner functions"> <template shadowrootmode=open> <style> @function --b() { result: --c(); /* 20px */ } @function --c() { result: 20px; } </style> <div> <template shadowrootmode=open> <style> @function --c() { result: C; } #target { --actual: --b() --c(); --expected: 20px C; } </style> <div id=target></div> </template> </div> </template> </div> <div data-name="Outer functions can't see inner functions (local vars)"> <template shadowrootmode=open> <style> @function --b() { --lb: --c(); result: var(--lb); /* 22px */ } @function --c() { result: 22px; } </style> <div> <template shadowrootmode=open> <style> @function --c() { result: C; } @function --d() { --ld: --b() --c(); result: var(--ld); } #target { --actual: --d(); --expected: 22px C; } </style> <div id=target></div> </template> </div> </template> </div> <div data-name="Function with same name in different scopes"> <template shadowrootmode=open> <style> @function --a() { result: 24px; } @function --b() { result: --a(); /* 24px */ } </style> <div> <template shadowrootmode=open> <style> @function --a() { result: --b(); /* Calls --b() in outer scope. */ } #target { /* Nothing is in a cycle here. */ --actual: --a(); --expected: 24px; } </style> <div id=target></div> </template> </div> </template> </div> <script> test_all_shadows(); </script>