Summary

Harness status: OK

Found 476 tests

Details

ResultTest NameMessage
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('red') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('red') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 0, 0)", "rgb(255, 0, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.remove('a_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.remove('a_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('a_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('a_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 0, 0)", "rgb(255, 0, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.remove('a_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.remove('a_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #child.classList.add('a_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #child.classList.add('a_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 0, 0)", "rgb(255, 0, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #child.classList.remove('a_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #child.classList.remove('a_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.remove('red') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.remove('red') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('orangered') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('orangered') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(255, 69, 0)", "rgb(255, 69, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.remove('a_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.remove('a_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('a_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('a_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(255, 69, 0)", "rgb(255, 69, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.remove('a_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.remove('a_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #child.classList.add('a_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #child.classList.add('a_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(255, 69, 0)", "rgb(255, 69, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #child.classList.remove('a_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #child.classList.remove('a_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.remove('orangered') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.remove('orangered') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('darkred') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('darkred') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(139, 0, 0)", "rgb(139, 0, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.remove('a_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.remove('a_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('a_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('a_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(139, 0, 0)", "rgb(139, 0, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.remove('a_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.remove('a_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #child.classList.add('a_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #child.classList.add('a_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(139, 0, 0)", "rgb(139, 0, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #child.classList.remove('a_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #child.classList.remove('a_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.remove('darkred') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.remove('darkred') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('pink') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('pink') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(255, 192, 203)", "rgb(255, 192, 203)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('a_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('a_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('a_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('a_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(255, 192, 203)", "rgb(255, 192, 203)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('a_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('a_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #child.classList.add('a_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #child.classList.add('a_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(255, 192, 203)", "rgb(255, 192, 203)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #child.classList.remove('a_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #child.classList.remove('a_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('pink') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('pink') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.add('green') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.add('green') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.remove('c_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.remove('c_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.add('c_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.add('c_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #child_previous.classList.add('c_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #child_previous.classList.add('c_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #child_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #child_previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #child_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #child_previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #child_previous.classList.remove('c_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #child_previous.classList.remove('c_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #child_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #child_previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 128, 0)", "rgb(0, 128, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #child_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #child_previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.remove('green') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.remove('green') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.add('lightgreen') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.add('lightgreen') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.remove('c_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.remove('c_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.remove('c_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.remove('c_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #child_previous.classList.add('c_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #child_previous.classList.add('c_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #child_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #child_previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #child_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #child_previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #child_previous.classList.remove('c_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #child_previous.classList.remove('c_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #child_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #child_previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(144, 238, 144)", "rgb(144, 238, 144)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #child_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #child_previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.remove('lightgreen') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.remove('lightgreen') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.add('darkgreen') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.add('darkgreen') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.remove('c_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.remove('c_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.add('c_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.add('c_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #child_previous.classList.add('c_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #child_previous.classList.add('c_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #child_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #child_previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #child_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #child_previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #child_previous.classList.remove('c_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #child_previous.classList.remove('c_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #child_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #child_previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(0, 100, 0)", "rgb(0, 100, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #child_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #child_previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.remove('darkgreen') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.remove('darkgreen') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('yellowgreen') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('yellowgreen') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('c_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('c_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('c_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #child_previous.classList.add('c_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #child_previous.classList.add('c_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #child_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #child_previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #child_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #child_previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("child_previous", "child_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #child_previous.classList.remove('c_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #child_previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child_previous", "child_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #child_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #child_previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(154, 205, 50)", "rgb(154, 205, 50)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #child_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #child_previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('yellowgreen') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('yellowgreen') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('blue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('blue') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.remove('f_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.remove('f_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('f_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('f_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.remove('f_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.remove('f_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #direct_next.classList.add('f_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #direct_next.classList.add('f_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #direct_next) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #direct_next) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #direct_next) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #direct_next) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #direct_next.classList.remove('f_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #direct_next.classList.remove('f_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #direct_next) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #direct_next) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(0, 0, 255)", "rgb(0, 0, 255)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #direct_next) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #direct_next) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.remove('blue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.remove('blue') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('skyblue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('skyblue') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.remove('f_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.remove('f_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('f_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('f_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.remove('f_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.remove('f_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #direct_next.classList.add('f_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #direct_next.classList.add('f_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #direct_next) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #direct_next) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #direct_next) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #direct_next) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #direct_next.classList.remove('f_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #direct_next.classList.remove('f_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #direct_next) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #direct_next) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(135, 206, 235)", "rgb(135, 206, 235)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #direct_next) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #direct_next) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.remove('skyblue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.remove('skyblue') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('lightblue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('lightblue') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.remove('f_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.remove('f_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('f_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('f_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.remove('f_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.remove('f_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #direct_next.classList.add('f_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #direct_next.classList.add('f_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #direct_next) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #direct_next) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #direct_next) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #direct_next) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #direct_next.classList.remove('f_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #direct_next.classList.remove('f_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #direct_next) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #direct_next) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 216, 230)", "rgb(173, 216, 230)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #direct_next) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #direct_next) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.remove('lightblue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.remove('lightblue') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('darkblue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('darkblue') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("previous", "previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('f_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('f_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("previous", "previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('f_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('f_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('f_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('f_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #direct_next.classList.add('f_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #direct_next.classList.add('f_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #direct_next) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #direct_next) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #direct_next) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #direct_next) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("direct_next", "direct_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #direct_next.classList.remove('f_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #direct_next.classList.remove('f_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("direct_next", "direct_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #direct_next) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #direct_next) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(0, 0, 139)", "rgb(0, 0, 139)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #direct_next) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #direct_next) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('darkblue') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('darkblue') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.add('yellow') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.add('yellow') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 255, 0)", "rgb(255, 255, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.remove('h_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.remove('h_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.remove('yellow') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.remove('yellow') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.add('ivory') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.add('ivory') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(255, 255, 240)", "rgb(255, 255, 240)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.remove('h_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.remove('h_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.remove('ivory') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.remove('ivory') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.add('greenyellow') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.add('greenyellow') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(173, 255, 47)", "rgb(173, 255, 47)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.remove('h_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.remove('h_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.remove('greenyellow') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.remove('greenyellow') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('khaki') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('khaki') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(240, 230, 140)", "rgb(240, 230, 140)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('h_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('h_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('khaki') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('khaki') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.add('purple') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.add('purple') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 0, 128)", "rgb(128, 0, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 0, 128)", "rgb(128, 0, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.remove('j_has_scope') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.remove('j_has_scope') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("has_scope", "has_scope")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 0, 128)", "rgb(128, 0, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (removal) check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.remove('purple') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.remove('purple') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.add('violet') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.add('violet') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(238, 130, 238)", "rgb(238, 130, 238)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(238, 130, 238)", "rgb(238, 130, 238)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.remove('j_descendant') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.remove('j_descendant') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("descendant", "descendant")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check #descendant color
Asserts run
Pass
assert_equals("rgb(238, 130, 238)", "rgb(238, 130, 238)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (removal) check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("descendant", "descendant")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.remove('violet') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.remove('violet') : check #descendant color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.add('orchid') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.add('orchid') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(218, 112, 214)", "rgb(218, 112, 214)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(218, 112, 214)", "rgb(218, 112, 214)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.remove('j_indirect_next') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.remove('j_indirect_next') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(218, 112, 214)", "rgb(218, 112, 214)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (removal) check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next", "indirect_next")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.remove('orchid') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.remove('orchid') : check #indirect_next color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('plum') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('plum') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(221, 160, 221)", "rgb(221, 160, 221)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(221, 160, 221)", "rgb(221, 160, 221)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('j_indirect_next_child') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('j_indirect_next_child') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent_previous", "parent_previous")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:114:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testSiblingInsertionRemoval ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:117:3)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:129:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(221, 160, 221)", "rgb(221, 160, 221)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:133:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (removal) check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:138:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (removal) check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:142:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("indirect_next_child", "indirect_next_child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('plum') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('plum') : check #indirect_next_child color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('orange') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('orange') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('m') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('m') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 165, 0)", "rgb(255, 165, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('m') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('m') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('n') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('n') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 165, 0)", "rgb(255, 165, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("parent", "parent")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('n') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('n') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('m') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('m') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 165, 0)", "rgb(255, 165, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.remove('m') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.remove('m') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('n') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('n') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 165, 0)", "rgb(255, 165, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.remove('n') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.remove('n') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.add('m') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.add('m') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 165, 0)", "rgb(255, 165, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.remove('m') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.remove('m') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.add('n') : check matches (true)
Asserts run
Pass
assert_equals(true, true)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.add('n') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(255, 165, 0)", "rgb(255, 165, 0)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("child", "child")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.remove('n') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #child.classList.remove('n') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:89:3)
Pass
assert_equals("has_scope", "has_scope")
    at testClassChange ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:91:3)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.remove('orange') : check matches (false)
Asserts run
Pass
assert_equals(false, false)
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:100:7)
Pass[ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.remove('orange') : check #has_scope color
Asserts run
Pass
assert_equals("rgb(128, 128, 128)", "rgb(128, 128, 128)")
    at Test.<anonymous> ( /css/selectors/invalidation/is-pseudo-containing-complex-in-has.html:103:7)