PASS: class mutation invalidates affected :has() rule | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=10, hasResultCacheHits=7, hasResultCacheMisses=3
PASS: class mutation still invalidates matching :has() rule | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=10, hasResultCacheHits=7, hasResultCacheMisses=3
PASS: dir=auto text mutation invalidates :has(:empty) | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: svg camel-case attribute mutation invalidates :has() | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: svg lower-case selector does not match camel-case attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: checked property mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: disabled attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: enabled attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: required attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: optional attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: placeholder shown value mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: lang attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: dir attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: link href mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: any-link href mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
