WPT
wpt / css / css-cascade / scope-evaluation.html
Spec: CSS Cascading ↗
Runs: Chrome 155.0.8042.0 (wpt@a1ecd0c09, 2026-09-04) | Firefox 157.0a1 (wpt@a1ecd0c09, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-52f0f (wpt@0588f3896, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | 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 | 26/26 | 26/26 | 26/26 | 9/26 | 0/26 |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Single scope | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Scope can not match its own root without :scope | PASS | PASS | PASS | PASS | PASS | FAIL |
| Selecting self with :scope | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Single scope with limit | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Single scope, :scope pseudo in main selector | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Single scope, :scope pseudo in to-selector | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Multiple scopes, :scope pseudo in to-selector | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Inner @scope with :scope in from-selector | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Multiple scopes from same @scope-rule, only one limited | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Multiple scopes from same @scope-rule, both limited | PASS | PASS | PASS | PASS | PASS | FAIL |
| Nested scopes | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Nested scopes, reverse | PASS | PASS | PASS | PASS | PASS | FAIL |
| Nested scopes, with to-selector | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Nested scopes, :has(:scope ...) in inner from-selector | PASS | PASS | PASS | PASS | PASS | — |
| Nested scopes, inner scoping root must be in the outer scope | PASS | PASS | PASS | PASS | PASS | — |
| Nested scopes, inner scoping root may be the outer scoping root | PASS | PASS | PASS | PASS | FAIL | — |
| :scope selecting itself | PASS | PASS | PASS | PASS | FAIL | FAIL |
| The scoping limit is not in scope | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Simulated inclusive scoping limit | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Scope with no elements | PASS | PASS | PASS | PASS | PASS | FAIL |
| :scope direct adjacent sibling | PASS | PASS | PASS | PASS | PASS | FAIL |
| :scope indirect adjacent sibling | PASS | PASS | PASS | PASS | PASS | FAIL |
| Relative selector inside @scope | PASS | PASS | PASS | PASS | FAIL | FAIL |
| :scope in two different compounds | PASS | PASS | PASS | PASS | PASS | FAIL |
| Scope root with :has() | PASS | PASS | PASS | PASS | FAIL | FAIL |
| Any scope limit makes the element out of scope | PASS | PASS | PASS | PASS | FAIL | FAIL |