WPT
wpt / css / selectors / invalidation / host-has-shadow-tree-element-at-nonsubject-position.html
Spec: Selectors ↗
Runs: Chrome 155.0.8041.0 (wpt@2c385f65e, 2026-09-04) | Firefox 157.0a1 (wpt@2c385f65e, 2026-09-04) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a7825 (wpt@2c385f65e, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 26/26 | 10/26 | 25/26 | 25/26 | 10/26 | 0/26 |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Initial color | PASS | PASS | PASS | PASS | PASS | — |
| Add .descendant to #shadow_child | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .descendant from #shadow_child | PASS | PASS | PASS | PASS | PASS | — |
| Add .descendant to #shadow_descendant | PASS | FAIL | PASS | PASS | FAIL | — |
| Add .ancestor to #shadow_child:has(.descendant) | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .ancestor from #shadow_child:has(.descendant) | PASS | FAIL | PASS | PASS | FAIL | — |
| Add .child to #shadow_child:has(.descendant) | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .child from #shadow_child:has(.descendant) | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .descendant from #shadow_descendant | PASS | PASS | PASS | PASS | PASS | — |
| Add .child to #shadow_child | PASS | FAIL | PASS | PASS | FAIL | — |
| Add .grand_child to #shadow_descendant | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Add .host_context to #host | PASS | FAIL | PASS | PASS | FAIL | — |
| Add .descendant to #shadow_descendant.grand_child | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .descendant from #shadow_descendant.grand_child | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .grand_child from #shadow_descendant | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove .child from #shadow_child | PASS | PASS | PASS | PASS | PASS | — |
| Add .child to #shadow_descendant | PASS | PASS | PASS | PASS | PASS | — |
| Remove .child from #shadow_descendant | PASS | PASS | PASS | PASS | PASS | — |
| Insert #first_child.descendant to shadow root | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove #first_child.descendant from shadow root | PASS | PASS | PASS | PASS | PASS | — |
| Insert #last_child.descendant to shadow root | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove #last_child.descendant from shadow root | PASS | PASS | PASS | PASS | PASS | — |
| Insert #child_in_middle.descendant before #shadow_child | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove #child_in_middle.descendant from shadow root | PASS | PASS | PASS | PASS | PASS | — |
| Insert #grand_child.descendant before #shadow_descendant | PASS | FAIL | PASS | PASS | FAIL | — |
| Remove #grand_child.descendant from shadow tree | PASS | PASS | PASS | PASS | PASS | — |
| Uncaught JS error | — | — | — | — | — | FAIL |