rightmost :checked self selector matches uppercase class in quirks mode initial: selectorMatches=false, probe=base rightmost :checked self selector matches uppercase class in quirks mode after mutation: selectorMatches=true, probe=base PASS: rightmost :checked self selector matches uppercase class in quirks mode | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 rightmost :checked self selector matches mixed-case compound classes in quirks mode initial: selectorMatches=false, probe=base rightmost :checked self selector matches mixed-case compound classes in quirks mode after mutation: selectorMatches=true, probe=base PASS: rightmost :checked self selector matches mixed-case compound classes in quirks mode | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 rightmost :not(:checked) self selector matches uppercase class in quirks mode initial: selectorMatches=true, probe=base rightmost :not(:checked) self selector matches uppercase class in quirks mode after mutation: selectorMatches=false, probe=base PASS: rightmost :not(:checked) self selector matches uppercase class in quirks mode | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 rightmost :disabled self selector matches uppercase class in quirks mode initial: selectorMatches=false, probe=base rightmost :disabled self selector matches uppercase class in quirks mode after mutation: selectorMatches=true, probe=base PASS: rightmost :disabled self selector matches uppercase class in quirks mode | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 rightmost :required self selector matches uppercase class in quirks mode initial: selectorMatches=false, probe=base rightmost :required self selector matches uppercase class in quirks mode after mutation: selectorMatches=true, probe=base PASS: rightmost :required self selector matches uppercase class in quirks mode | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 rightmost :checked self selector still rejects unrelated class in quirks mode initial: selectorMatches=false, probe=base rightmost :checked self selector still rejects unrelated class in quirks mode after mutation: selectorMatches=false, probe=base PASS: rightmost :checked self selector still rejects unrelated class in quirks mode | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks className assignment initial: selectorMatches=false, probe=base quirks className assignment after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class selector matches after lowercase className assignment | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse className assignment initial: selectorMatches=false, probe=base quirks inverse className assignment after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class selector matches after uppercase className assignment | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse className clear initial: selectorMatches=true, probe=base quirks inverse className clear after mutation: selectorMatches=false, probe=base PASS: quirks lowercase class selector loses style after uppercase className clear | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks className clear initial: selectorMatches=true, probe=base quirks className clear after mutation: selectorMatches=false, probe=base PASS: quirks uppercase class selector loses style after lowercase className clear | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks descendant class add initial: selectorMatches=false, probe=base quirks descendant class add target after mutation: selectorMatches=true, probe=base quirks descendant class add ancestor after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class descendant selector matches after lowercase ancestor class add | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse descendant class add initial: selectorMatches=false, probe=base quirks inverse descendant class add target after mutation: selectorMatches=true, probe=base quirks inverse descendant class add ancestor after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class descendant selector matches after uppercase ancestor class add | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks descendant class remove initial: selectorMatches=true, probe=base quirks descendant class remove after mutation: selectorMatches=false, probe=base PASS: quirks uppercase class descendant selector loses style after lowercase ancestor class remove | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks adjacent class add initial: selectorMatches=false, probe=base quirks adjacent class add after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class adjacent sibling selector matches after lowercase previous sibling class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse adjacent class add initial: selectorMatches=false, probe=base quirks inverse adjacent class add after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class adjacent sibling selector matches after uppercase previous sibling class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks general sibling class add initial: selectorMatches=false, probe=base quirks general sibling class add after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class general sibling selector matches after lowercase previous sibling class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse general sibling class add initial: selectorMatches=false, probe=base quirks inverse general sibling class add after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class general sibling selector matches after uppercase previous sibling class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks selector list class add initial: selectorMatches=false, probe=base quirks selector list class add after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class selector list alternative matches after lowercase class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse selector list class add initial: selectorMatches=false, probe=base quirks inverse selector list class add after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class selector list alternative matches after uppercase class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks has descendant class add initial: selectorMatches=false, probe=base quirks has descendant class add after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class inside :has() matches after lowercase descendant class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse has descendant class add initial: selectorMatches=false, probe=base quirks inverse has descendant class add after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class inside :has() matches after uppercase descendant class add | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=0 quirks structural :has() lowercase class after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class after uppercase nested descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class after uppercase nested descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class after uppercase nested descendant append | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class after uppercase direct child append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class after uppercase direct child append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class after uppercase direct child append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class inside :is() after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class inside :is() after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class inside :is() after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class inside :where() after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class inside :where() after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class inside :where() after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class selector-list branch after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class selector-list branch after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class selector-list branch after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=0, hasResultCacheMisses=2 quirks structural :has() lowercase compound class after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase compound class after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase compound class after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class inside :not() after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class inside :not() after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class inside :not() after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class inside nested :not(:is()) after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class inside nested :not(:is()) after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class inside nested :not(:is()) after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class plus id after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class plus id after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class plus id after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class plus second class after mixed-case descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class plus second class after mixed-case descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class plus second class after mixed-case descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class plus attribute value after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class plus attribute value after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class plus attribute value after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class plus case-insensitive attribute after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class plus case-insensitive attribute after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class plus case-insensitive attribute after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class under universal :where() after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class under universal :where() after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class under universal :where() after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in :is() sibling branch after uppercase pair append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in :is() sibling branch after uppercase pair append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in :is() sibling branch after uppercase pair append | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in :where() sibling branch after uppercase pair append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in :where() sibling branch after uppercase pair append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in :where() sibling branch after uppercase pair append | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in indirect sibling branch after uppercase chain append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in indirect sibling branch after uppercase chain append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in indirect sibling branch after uppercase chain append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in nth-child of-list after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in nth-child of-list after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in nth-child of-list after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in nth-last-child of-list after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in nth-last-child of-list after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in nth-last-child of-list after uppercase descendant append | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in first-of-type after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in first-of-type after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in first-of-type after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in only-of-type after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in only-of-type after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in only-of-type after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in only-of-type becomes false after plain sibling append initial: selectorMatches=true, probe=match quirks structural :has() lowercase class in only-of-type becomes false after plain sibling append after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class in only-of-type becomes false after plain sibling append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in last-child becomes false after plain trailing sibling append initial: selectorMatches=true, probe=match quirks structural :has() lowercase class in last-child becomes false after plain trailing sibling append after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class in last-child becomes false after plain trailing sibling append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in second child after prepending before uppercase child initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in second child after prepending before uppercase child after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in second child after prepending before uppercase child | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in selector-list first branch after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in selector-list first branch after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in selector-list first branch after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class in selector-list later branch after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class in selector-list later branch after uppercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class in selector-list later branch after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=6, hasResultCacheHits=0, hasResultCacheMisses=3 quirks structural :has() lowercase class with missing required id stays false after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class with missing required id stays false after uppercase descendant append after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class with missing required id stays false after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class with missing required attribute stays false after uppercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class with missing required attribute stays false after uppercase descendant append after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class with missing required attribute stays false after uppercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class loses style after uppercase descendant removal initial: selectorMatches=true, probe=match quirks structural :has() lowercase class loses style after uppercase descendant removal after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class loses style after uppercase descendant removal | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class after uppercase replacement subtree initial: selectorMatches=false, probe=base quirks structural :has() lowercase class after uppercase replacement subtree after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class after uppercase replacement subtree | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class loses style after uppercase replacement with plain child initial: selectorMatches=true, probe=match quirks structural :has() lowercase class loses style after uppercase replacement with plain child after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class loses style after uppercase replacement with plain child | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class after uppercase fragment append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class after uppercase fragment append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class after uppercase fragment append | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class after uppercase child moved into subject initial: selectorMatches=false, probe=base quirks structural :has() lowercase class after uppercase child moved into subject after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() lowercase class after uppercase child moved into subject | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class loses style after uppercase child moved out of subject initial: selectorMatches=true, probe=match quirks structural :has() lowercase class loses style after uppercase child moved out of subject after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class loses style after uppercase child moved out of subject | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() uppercase class selector after lowercase descendant append initial: selectorMatches=false, probe=base quirks structural :has() uppercase class selector after lowercase descendant append after mutation: selectorMatches=true, probe=match PASS: quirks structural :has() uppercase class selector after lowercase descendant append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks structural :has() lowercase class unaffected by unrelated uppercase structural append initial: selectorMatches=false, probe=base quirks structural :has() lowercase class unaffected by unrelated uppercase structural append after mutation: selectorMatches=false, probe=base PASS: quirks structural :has() lowercase class unaffected by unrelated uppercase structural append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=1 quirks class add then state initial: selectorMatches=false, probe=base quirks class add then state after mutation: selectorMatches=true, probe=base PASS: quirks uppercase class with rightmost state selector matches after lowercase class add then state change | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse class add then state initial: selectorMatches=false, probe=base quirks inverse class add then state after mutation: selectorMatches=true, probe=base PASS: quirks lowercase class with rightmost state selector matches after uppercase class add then state change | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks sibling input initial: selectorMatches=false, probe=base quirks sibling label initial: selectorMatches=false, probe=base quirks sibling input after checked: selectorMatches=false, probe=base quirks sibling label after checked: selectorMatches=true, probe=match PASS: rightmost self selector can be skipped for missing uppercase class in quirks mode while sibling updates | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks slotted className assignment initial: selectorMatches=false, probe=base quirks slotted className assignment after mutation: selectorMatches=true, probe=base PASS: quirks uppercase slotted class selector matches after lowercase className assignment | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks inverse slotted className assignment initial: selectorMatches=false, probe=base quirks inverse slotted className assignment after mutation: selectorMatches=true, probe=base PASS: quirks lowercase slotted class selector matches after uppercase className assignment | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=0, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0 quirks slotted uppercase class initial: selectorMatches=false, probe=base quirks slotted uppercase class after checked: selectorMatches=true, probe=match PASS: rightmost ::slotted() :checked selector matches uppercase class in quirks mode | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0