| PASS | ":has(a)" should be a valid selector | |
| PASS | ":has(#a)" should be a valid selector | |
| PASS | ":has(.a)" should be a valid selector | |
| PASS | ":has([a])" should be a valid selector | |
| PASS | ":has([a=\"b\"])" should be a valid selector | |
| PASS | ":has([a|=\"b\"])" should be a valid selector | |
| PASS | ":has(:hover)" should be a valid selector | |
| PASS | "*:has(.a)" should be a valid selector | |
| PASS | ".a:has(.b)" should be a valid selector | |
| PASS | ".a:has(> .b)" should be a valid selector | |
| PASS | ".a:has(~ .b)" should be a valid selector | |
| PASS | ".a:has(+ .b)" should be a valid selector | |
| PASS | ".a:has(.b) .c" should be a valid selector | |
| PASS | ".a .b:has(.c)" should be a valid selector | |
| PASS | ".a .b:has(.c .d)" should be a valid selector | |
| PASS | ".a .b:has(.c .d) .e" should be a valid selector | |
| PASS | ".a:has(.b:is(.c .d))" should be a valid selector | |
| PASS | ".a:is(.b:has(.c) .d)" should be a valid selector | |
| PASS | ".a:not(:has(.b))" should be a valid selector | |
| PASS | ".a:has(:not(.b))" should be a valid selector | |
| PASS | ".a:has(.b):has(.c)" should be a valid selector | |
| PASS | "*|*:has(*)" should be a valid selector | |
| PASS | ":has(*|*)" should be a valid selector | |
| PASS | ":has" should be an invalid selector | |
| PASS | ".a:has" should be an invalid selector | |
| PASS | ".a:has b" should be an invalid selector | |
| PASS | ":has()" should be an invalid selector | |
| PASS | ":has(123)" should be an invalid selector | |
| PASS | ":has(.a, 123)" should be an invalid selector | |