Status: FAIL | Duration: 17ms | Subtests: 0/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-cascade/scope-part.html
<!DOCTYPE html> <link rel="author" title="David Shin" href="mailto:dshin@mozilla.com"> <link rel="help" href="drafts.csswg.org/css-cascade-6/#scoped-styles"> <link rel="help" href="https://drafts.csswg.org/css-shadow-parts/#part"> <link rel="match" href="scope-part-ref.html"> <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1908279"> <meta name="assert" content="Implicit @scope rule lets ::part selector to match inside the shadow tree"> <template id="custom-element"> <style> :host { display: block; } div { padding: 5px; } </style> <slot></slot> <div part="a"></div> <div part="b"></div> </template> <template id="custom-element-wrapper"> <style> :host { display: block; } div { padding: 5px; } </style> <custom-element exportparts="a"></custom-element> </template> <custom-element> <style> @scope { :scope { background: red; } } </style> </custom-element> <custom-element> <style> @scope { :scope::part(a), :scope::part(b) { background: blue; } } </style> </custom-element> <custom-element> <style> @scope { :scope::part(a), :scope::part(b) { background: red; } } </style> <custom-element> <style> @scope { :scope::part(a), :scope::part(b) { background: blue; } } </style> </custom-element> </custom-element> <custom-element-wrapper> <style slot="s"> @scope { :scope::part(a) { background: blue; } :scope::part(b) { background: red; } } </style> </custom-element-wrapper> <div> <template shadowrootmode=open> <!-- Inside a shadow root --> <custom-element-wrapper> <style slot="a"> @scope { :scope::part(a) { background: blue; } } </style> </custom-element-wrapper> </template> </div> <div> <template shadowrootmode=open> <!-- Shadow root & host at the same time --> <div style="padding: 5px;"> <template shadowrootmode=open> <div></div> </template> <style> @scope { :scope { background: red; } } </style> </div> </template> </div> <script> customElements.define( "custom-element", class extends HTMLElement { constructor() { super(); let template = document.getElementById("custom-element"); let templateContent = template.content; const shadowRoot = this.attachShadow({ mode: "open" }); shadowRoot.appendChild(templateContent.cloneNode(true)); } }, ); customElements.define( "custom-element-wrapper", class extends HTMLElement { constructor() { super(); let template = document.getElementById("custom-element-wrapper"); let templateContent = template.content; const shadowRoot = this.attachShadow({ mode: "open" }); shadowRoot.appendChild(templateContent.cloneNode(true)); } }, ); </script>
/css/css-cascade/scope-part-ref.html
<!DOCTYPE html> <style> div { padding: 5px; } .b { background: blue; } .r { background: red; } </style> <div class="r"></div> <div class="r"></div> <div class="b"></div> <div class="b"></div> <div class="b"></div> <div class="b"></div> <div class="r"></div> <div class="r"></div> <div class="b"></div> <div></div> <div class="b"></div> <div></div> <div class="r"></div>