Click here to download the Blitz Browser!

WPT

wpt / css / selectors / has-basic.html

Spec: Selectors ↗

Runs: Chrome 155.0.8038.0 (wpt@b1a7025f8, 2026-09-02) | Firefox 157.0a1 (wpt@b1a7025f8, 2026-09-02) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a7884 (wpt@b1a7025f8, 2026-09-02) | Servo Servo 0.5 (wpt@2ccd2cbf8, 2026-09-01) | Blitz 7727414ca (wpt@a95401e4e, 2026-09-02)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total18/1818/1818/1818/180/180/18
SubtestChromeFirefoxSafariLadybirdServoBlitz
:has(#a) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(.ancestor) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(.target) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(.descendant) matches expected elementsPASSPASSPASSPASSFAILFAIL
.parent:has(.target) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(.sibling ~ .target) matches expected elementsPASSPASSPASSPASSFAILFAIL
.parent:has(.sibling ~ .target) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(:is(.target ~ .sibling .descendant)) matches expected elementsPASSPASSPASSPASSFAILFAIL
.parent:has(:is(.target ~ .sibling .descendant)) matches expected elementsPASSPASSPASSPASSFAILFAIL
.sibling:has(.descendant) ~ .target matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(> .parent) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(> .target) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(> .parent, > .target) matches expected elementsPASSPASSPASSPASSFAILFAIL
:has(+ #h) matches expected elementsPASSPASSPASSPASSFAILFAIL
.parent:has(~ #h) matches expected elementsPASSPASSPASSPASSFAILFAIL
.sibling:has(.descendant) matches expected elementPASSPASSPASSPASSFAILFAIL
closest(.ancestor:has(.descendant)) returns expected elementPASSPASSPASSPASSFAILFAIL
:has(.target ~ .sibling .descendant) matches expectedlyPASSPASSPASSPASSFAILFAIL