LibWeb: Add stale style focus and computed style coverage

Add coverage for focus and getComputedStyle() queries that run while
style work is pending for the target element, its ancestors, slotted
nodes, media queries, animations, and :has() invalidation.

The expected output records the current stale results so the targeted
style update change can show the behavior fix directly. Also make the
style invalidation counter tests avoid recomputation counters in cases
where the exact recomputation count is incidental to the invalidation
behavior under test.
This commit is contained in:
Andreas Kling 2026-05-22 17:11:50 +02:00 committed by Andreas Kling
parent a18805ceeb
commit 459ad81da5
22 changed files with 401 additions and 169 deletions

View file

@ -1,6 +1,18 @@
after visible.focus(): visible
after hidden ancestor input.focus() with computed style: visible
after display none input.focus(): visible
after display none from dirty style input.focus(): visible
after display none from dirty style offsetWidth: 0
after display none ancestor from dirty style input.focus(): visible
after getComputedStyle in dirty display none subtree: rgb(4, 5, 6)
after display none from pending animation input.focus(): animated-display-none-target
after display none ancestor from pending animation input.focus(): animated-display-none-ancestor-target
after display none from pending descendant invalidation input.focus(): animated-display-none-ancestor-target
after display none from pending slotted invalidation input.focus(): visible
after display none from pending :has invalidation input.focus(): visible
after display none from pending media query input.focus(): BODY
after display none from pending parent media query input.focus(): BODY
after detached input.focus(): visible
after display contents div.focus(): display-contents
after unhidden input.focus(): hidden-ancestor
after documentElement.focus(): BODY

View file

@ -8,3 +8,6 @@
7: rgb(0, 128, 0)
8a: rgb(0, 0, 255)
8b: rgb(0, 0, 255)
9a: rgb(255, 0, 0)
9b: rgb(255, 0, 0)
10: rgb(255, 0, 0)

View file

@ -1,4 +1,4 @@
PASS: attribute class match set requires class attribute presence | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: attribute class match set requires class attribute presence | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: [class] descendant loses match | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: [class] child loses match | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: typed [class] descendant loses match | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0

View file

@ -1,13 +1,13 @@
PASS: class mutation invalidates affected :has() rule | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=8, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=9, hasResultCacheHits=7, hasResultCacheMisses=2
PASS: class mutation still invalidates matching :has() rule | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=9, hasResultCacheHits=7, hasResultCacheMisses=2
PASS: dir=auto text mutation invalidates :has(:empty) | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: checked property mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: disabled attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: enabled attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: required attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: optional attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: placeholder shown value mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: lang attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: dir attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: link href mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: any-link href mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: class mutation invalidates affected :has() rule | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=9, hasResultCacheHits=7, hasResultCacheMisses=2
PASS: class mutation still invalidates matching :has() rule | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=9, hasResultCacheHits=7, hasResultCacheMisses=2
PASS: dir=auto text mutation invalidates :has(:empty) | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: checked property mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: disabled attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: enabled attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: required attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: optional attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: placeholder shown value mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: lang attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: dir attribute mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: link href mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: any-link href mutation invalidates :has() | styleInvalidations=0, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,50 +1,50 @@
RESULT: adjacent match stops after plain element inserted between operands: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: adjacent match stops after plain element inserted between operands | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent match stops after plain element inserted between operands | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent match starts after plain middle element is removed: initial=base expectedInitial=base, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: adjacent match starts after plain middle element is removed | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent match starts after plain middle element is removed | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent match starts after plain middle element moves after right operand: initial=base expectedInitial=base, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: adjacent match starts after plain middle element moves after right operand | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent match starts after plain middle element moves after right operand | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent match stops after trailing plain element moves between operands: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: adjacent match stops after trailing plain element moves between operands | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent match stops after trailing plain element moves between operands | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent attribute right operand stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: adjacent attribute right operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent attribute right operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent id left operand stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: adjacent id left operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent id left operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent tag operands stop after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: adjacent tag operands stop after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent tag operands stop after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: child-scoped adjacent operands stop after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: child-scoped adjacent operands stop after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: child-scoped adjacent operands stop after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: nested target is invalidated when adjacent match stops: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: nested target is invalidated when adjacent match stops | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: nested target is invalidated when adjacent match stops | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: direct child target is invalidated when adjacent match stops: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: direct child target is invalidated when adjacent match stops | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: direct child target is invalidated when adjacent match stops | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: is right operand stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: is right operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: is right operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: where left operand stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: where left operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: where left operand stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: selector list argument stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: selector list argument stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: non-subject :has sibling combinator: selector list argument stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
RESULT: descendant container adjacent argument stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: descendant container adjacent argument stops after plain insertion | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: descendant container adjacent argument stops after plain insertion | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: descendant container adjacent argument starts after middle removal: initial=base expectedInitial=base, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: descendant container adjacent argument starts after middle removal | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: descendant container adjacent argument starts after middle removal | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: outer id anchor with adjacent argument stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: outer id anchor with adjacent argument stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: outer id anchor with adjacent argument stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: outer class chain anchor with adjacent argument stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: outer class chain anchor with adjacent argument stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: outer class chain anchor with adjacent argument stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: custom element spacer stops adjacent match: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: custom element spacer stops adjacent match | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: custom element spacer stops adjacent match | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: shadow-local adjacent match stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: shadow-local adjacent match stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: shadow-local adjacent match stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: shadow-local adjacent match starts after middle removal: initial=base expectedInitial=base, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: shadow-local adjacent match starts after middle removal | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: shadow-local adjacent match starts after middle removal | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: subsequent sibling with structural pseudo stops after plain insertion: initial=match expectedInitial=match, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: subsequent sibling with structural pseudo stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: subsequent sibling with structural pseudo stops after plain insertion | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: subsequent sibling with structural pseudo starts after middle removal: initial=base expectedInitial=base, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: subsequent sibling with structural pseudo starts after middle removal | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: subsequent sibling with structural pseudo starts after middle removal | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent match survives plain insertion before operands: initial=match expectedInitial=match, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: adjacent match survives plain insertion before operands | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent match survives plain insertion before operands | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent mismatch survives plain insertion when right operand does not match: initial=base expectedInitial=base, after=base expectedAfter=base
PASS: non-subject :has sibling combinator: adjacent mismatch survives plain insertion when right operand does not match | styleInvalidations=5, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent mismatch survives plain insertion when right operand does not match | styleInvalidations=5, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
RESULT: adjacent match survives removing unrelated trailing plain element: initial=match expectedInitial=match, after=match expectedAfter=match
PASS: non-subject :has sibling combinator: adjacent match survives removing unrelated trailing plain element | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: non-subject :has sibling combinator: adjacent match survives removing unrelated trailing plain element | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,4 +1,4 @@
PASS: child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document: mixed-case SVG type selector with :not(:empty) becomes true after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -97,7 +97,7 @@ PASS: child mutation: document: :has(:not(.miss)) after non-miss child append |
PASS: child mutation: document: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: document: :has(:nth-child(even).hit) after even child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document-styled-use-shadow: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: document-styled-use-shadow: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: document-styled-use-shadow: :has(.hit) after DocumentFragment append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -192,7 +192,7 @@ PASS: child mutation: document-styled-use-shadow: :has(:not(.miss)) after non-mi
PASS: child mutation: document-styled-use-shadow: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: document-styled-use-shadow: :has(:nth-child(even).hit) after even child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: document-styled-use-shadow: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-internal: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-internal: mixed-case SVG type selector with :not(:empty) becomes true after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -291,7 +291,7 @@ PASS: child mutation: shadow-internal: :has(:not(.miss)) after non-miss child ap
PASS: child mutation: shadow-internal: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-host: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: shadow-host: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-host: :has(.hit) after DocumentFragment append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -387,7 +387,7 @@ PASS: child mutation: shadow-host: :has(:not(.miss)) after non-miss child append
PASS: child mutation: shadow-host: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-host: :has(:nth-child(even).hit) after even child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: shadow-host: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-default: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-default: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-default: mixed-case SVG type selector with :not(:empty) becomes true after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -486,7 +486,7 @@ PASS: child mutation: slotted-default: :has(:not(.miss)) after non-miss child ap
PASS: child mutation: slotted-default: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-default: :has(:nth-child(even).hit) after even child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-named: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-named: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-named: mixed-case SVG type selector with :not(:empty) becomes true after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -585,7 +585,7 @@ PASS: child mutation: slotted-named: :has(:not(.miss)) after non-miss child appe
PASS: child mutation: slotted-named: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-named: :has(:nth-child(even).hit) after even child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-named: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-shadow-host-default: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-shadow-host-default: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-default: :has(.hit) after DocumentFragment append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -681,7 +681,7 @@ PASS: child mutation: slotted-shadow-host-default: :has(:not(.miss)) after non-m
PASS: child mutation: slotted-shadow-host-default: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-default: :has(:nth-child(even).hit) after even child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-shadow-host-named: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: child mutation: slotted-shadow-host-named: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-named: :has(.hit) after DocumentFragment append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -777,7 +777,7 @@ PASS: child mutation: slotted-shadow-host-named: :has(:not(.miss)) after non-mis
PASS: child mutation: slotted-shadow-host-named: :has(:not(:empty)) after text child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-named: :has(:nth-child(even).hit) after even child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: child mutation: slotted-shadow-host-named: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: document: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation without warmup: document: :has(.hit) after direct child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -948,7 +948,7 @@ PASS: pseudo-element child mutation: document: :has(:nth-child(even).hit) after
PASS: pseudo-element child mutation without warmup: document: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation: document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation without warmup: document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: shadow-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: shadow-internal: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation without warmup: shadow-internal: :has(.hit) after direct child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -1119,7 +1119,7 @@ PASS: pseudo-element child mutation: shadow-internal: :has(:nth-child(even).hit)
PASS: pseudo-element child mutation without warmup: shadow-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation: shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation without warmup: shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: shadow-host: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: pseudo-element child mutation: shadow-host: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: pseudo-element child mutation without warmup: shadow-host: :has(.hit) after direct child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,9 +1,9 @@
PASS: stress warm child mutation: part-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-document: :empty becomes false after element append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-document: :empty becomes false after element append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-document: :empty becomes false after element append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-document: :empty becomes false after element append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-document: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -583,12 +583,12 @@ PASS: stress warm pseudo-element child mutation: part-document: :has(:nth-child(
PASS: stress cold pseudo-element child mutation: part-document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=0, hasResultCacheMisses=4
PASS: detached child mutation: part-document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=0, hasResultCacheMisses=4
PASS: stress warm child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-document: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-document: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0

View file

@ -1,5 +1,5 @@
PASS: detached child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-internal: :empty becomes false after textContent | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-internal: :empty becomes false after textContent | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-internal: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -193,8 +193,8 @@ PASS: detached child mutation: part-shadow-internal: :has(:nth-child(even).hit)
PASS: detached pseudo-element child mutation: part-shadow-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=11, hasResultCacheHits=4, hasResultCacheMisses=4
PASS: detached child mutation: part-shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=14, hasResultCacheHits=5, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-internal: :empty becomes false after textContent | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after textContent | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-internal: :has(.hit) after direct child append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
@ -385,8 +385,8 @@ PASS: detached child mutation: part-shadow-host-internal: :has(:nth-child(even).
PASS: detached pseudo-element child mutation: part-shadow-host-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=12, hasResultCacheHits=4, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=15, hasResultCacheHits=5, hasResultCacheMisses=6
PASS: detached child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-ancestor: :empty becomes false after textContent | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after textContent | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-ancestor: :has(.hit) after direct child append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -577,8 +577,8 @@ PASS: detached child mutation: part-shadow-ancestor: :has(:nth-child(even).hit)
PASS: detached pseudo-element child mutation: part-shadow-ancestor: :has(:nth-child(even).hit) after even child append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=6, hasResultCacheHits=1, hasResultCacheMisses=4
PASS: detached child mutation: part-shadow-ancestor: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-ancestor: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=7, hasResultCacheHits=1, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=12, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=12, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-ancestor: :empty becomes false after textContent | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after textContent | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,5 +1,5 @@
PASS: stress warm pseudo-element child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-internal: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-internal: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=2, hasResultCacheMisses=2
@ -190,8 +190,8 @@ PASS: stress warm pseudo-element child mutation: part-shadow-internal: :has(:nth
PASS: stress cold pseudo-element child mutation: part-shadow-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=8, hasResultCacheHits=4, hasResultCacheMisses=4
PASS: stress warm pseudo-element child mutation: part-shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=8, hasResultCacheHits=4, hasResultCacheMisses=4
PASS: stress cold pseudo-element child mutation: part-shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=10, hasResultCacheHits=5, hasResultCacheMisses=5
PASS: stress warm pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-internal: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-internal: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=2, hasResultCacheMisses=2
@ -382,8 +382,8 @@ PASS: stress warm pseudo-element child mutation: part-shadow-host-internal: :has
PASS: stress cold pseudo-element child mutation: part-shadow-host-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=9, hasResultCacheHits=4, hasResultCacheMisses=5
PASS: stress warm pseudo-element child mutation: part-shadow-host-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=8, hasResultCacheHits=4, hasResultCacheMisses=4
PASS: stress cold pseudo-element child mutation: part-shadow-host-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=11, hasResultCacheHits=5, hasResultCacheMisses=6
PASS: stress warm pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-ancestor: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-ancestor: :has(.hit) after direct child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=1, hasResultCacheMisses=3
@ -574,8 +574,8 @@ PASS: stress warm pseudo-element child mutation: part-shadow-ancestor: :has(:nth
PASS: stress cold pseudo-element child mutation: part-shadow-ancestor: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=5, hasResultCacheHits=1, hasResultCacheMisses=4
PASS: stress warm pseudo-element child mutation: part-shadow-ancestor: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=6, hasResultCacheHits=1, hasResultCacheMisses=5
PASS: stress cold pseudo-element child mutation: part-shadow-ancestor: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=6, hasResultCacheHits=1, hasResultCacheMisses=5
PASS: stress warm pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: part-shadow-host-ancestor: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=4, hasResultCacheHits=1, hasResultCacheMisses=3

View file

@ -1,5 +1,5 @@
PASS: stress warm child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-internal: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-internal: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -196,8 +196,8 @@ PASS: stress warm child mutation: part-shadow-internal: :has(:nth-child(even).hi
PASS: stress cold child mutation: part-shadow-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: stress warm child mutation: part-shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: stress cold child mutation: part-shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: stress warm child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-internal: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-internal: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
@ -388,8 +388,8 @@ PASS: stress warm child mutation: part-shadow-host-internal: :has(:nth-child(eve
PASS: stress cold child mutation: part-shadow-host-internal: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: stress warm child mutation: part-shadow-host-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: stress cold child mutation: part-shadow-host-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=2, hasResultCacheHits=1, hasResultCacheMisses=1
PASS: stress warm child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-ancestor: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-ancestor: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-ancestor: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -580,8 +580,8 @@ PASS: stress warm child mutation: part-shadow-ancestor: :has(:nth-child(even).hi
PASS: stress cold child mutation: part-shadow-ancestor: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: part-shadow-ancestor: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress cold child mutation: part-shadow-ancestor: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-ancestor: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-ancestor: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: part-shadow-host-ancestor: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,4 +1,4 @@
PASS: detached child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-default: :empty becomes false after textContent | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-default: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-default: mixed-case SVG type selector with :not(:empty) becomes true after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -97,7 +97,7 @@ PASS: detached child mutation: slotted-default: :has(:not(.miss)) after non-miss
PASS: detached child mutation: slotted-default: :has(:not(:empty)) after text child append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(:nth-child(even).hit) after even child append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-named: :empty becomes false after textContent | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-named: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-named: mixed-case SVG type selector with :not(:empty) becomes true after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -196,7 +196,7 @@ PASS: detached child mutation: slotted-named: :has(:not(.miss)) after non-miss c
PASS: detached child mutation: slotted-named: :has(:not(:empty)) after text child append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-named: :has(:nth-child(even).hit) after even child append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-named: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=11, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-shadow-host-default: :empty becomes false after textContent | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit) after direct child append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit) after DocumentFragment append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -292,7 +292,7 @@ PASS: detached child mutation: slotted-shadow-host-default: :has(:not(.miss)) af
PASS: detached child mutation: slotted-shadow-host-default: :has(:not(:empty)) after text child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(:nth-child(even).hit) after even child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=13, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=8, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=11, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-shadow-host-named: :empty becomes false after textContent | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: slotted-shadow-host-named: :has(.hit) after direct child append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-named: :has(.hit) after DocumentFragment append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,5 +1,5 @@
PASS: stress warm child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-default: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-default: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-default: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-default: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -196,8 +196,8 @@ PASS: stress warm child mutation: slotted-default: :has(:nth-child(even).hit) af
PASS: stress cold child mutation: slotted-default: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: slotted-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress cold child mutation: slotted-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-named: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-named: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-named: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-named: mixed-case SVG type selector with :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -394,8 +394,8 @@ PASS: stress warm child mutation: slotted-named: :has(:nth-child(even).hit) afte
PASS: stress cold child mutation: slotted-named: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: slotted-named: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress cold child mutation: slotted-named: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-shadow-host-default: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-shadow-host-default: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-shadow-host-default: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-shadow-host-default: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
@ -586,8 +586,8 @@ PASS: stress warm child mutation: slotted-shadow-host-default: :has(:nth-child(e
PASS: stress cold child mutation: slotted-shadow-host-default: :has(:nth-child(even).hit) after even child append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: slotted-shadow-host-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress cold child mutation: slotted-shadow-host-default: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=11, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-shadow-host-named: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-shadow-host-named: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=1, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: slotted-shadow-host-named: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: slotted-shadow-host-named: :has(.hit) after direct child append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1

View file

@ -1,9 +1,9 @@
PASS: stress warm child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: document: :empty becomes false after element append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: document: :empty becomes false after element append | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: document: :empty becomes false after element append | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: document: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: document: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -583,12 +583,12 @@ PASS: stress warm pseudo-element child mutation: document: :has(:nth-child(odd).
PASS: stress cold pseudo-element child mutation: document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: shadow-internal: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: shadow-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: shadow-internal: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: shadow-internal: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
@ -1168,12 +1168,12 @@ PASS: stress warm pseudo-element child mutation: shadow-internal: :has(:nth-chil
PASS: stress cold pseudo-element child mutation: shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(:nth-child(odd).hit) after prepend shifts child index | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: stress warm child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=1, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: shadow-host: :empty becomes false after element append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: shadow-host: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: shadow-host: :empty becomes false after textContent | styleInvalidations=1, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: shadow-host: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=3, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0

View file

@ -1,9 +1,9 @@
PASS: stress warm child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=2, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=2, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: detached pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after element append | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm child mutation: document-styled-use-shadow: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress cold child mutation: document-styled-use-shadow: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: stress warm pseudo-element child mutation: document-styled-use-shadow: :empty becomes false after textContent | styleInvalidations=2, fullStyleInvalidations=0, elementStyleRecomputations=1, elementStyleNoopRecomputations=0, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0

View file

@ -1,39 +1,39 @@
PASS: detached child mutation: document: :has(.hit) after direct child append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(.hit) after direct child append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: document: :has(.hit, .fallback) after first-list child append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(.hit, .fallback) after first-list child append | styleInvalidations=4, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=2, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(.hit) after direct child append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=9, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(.hit, .fallback) after first-list child append | styleInvalidations=9, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit) after direct child append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=13, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit, .fallback) after first-list child append | styleInvalidations=11, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: part-document: :has(.hit) after direct child append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(.hit) after direct child append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: detached child mutation: part-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=7, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=4, hasResultCacheHits=0, hasResultCacheMisses=4
PASS: detached child mutation: part-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=6, fullStyleInvalidations=0, elementStyleRecomputations=5, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=3, hasResultCacheHits=0, hasResultCacheMisses=3
PASS: detached child mutation: part-shadow-host-document: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-document: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=3, hasResultCacheHits=0, hasResultCacheMisses=3
PASS: detached child mutation: part-shadow-host-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=5, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=5, hasResultCacheHits=0, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, elementStyleRecomputations=6, elementStyleNoopRecomputations=4, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=5, hasResultCacheHits=0, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=6, hasResultCacheHits=1, hasResultCacheMisses=4
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=14, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=14, fullStyleInvalidations=0, elementStyleRecomputations=10, elementStyleNoopRecomputations=7, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=8, hasResultCacheHits=1, hasResultCacheMisses=6
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit, .fallback) after first-list child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit, .fallback) after first-list child append | styleInvalidations=12, fullStyleInvalidations=0, elementStyleRecomputations=8, elementStyleNoopRecomputations=6, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=11, hasResultCacheHits=2, hasResultCacheMisses=7
PASS: detached child mutation: document: :has(.hit) after direct child append | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(.hit) after direct child append | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: document: :has(.hit, .fallback) after first-list child append | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: document: :has(.hit, .fallback) after first-list child append | styleInvalidations=4, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: shadow-internal: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: shadow-internal: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(.hit) after direct child append | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=11, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-default: :has(.hit, .fallback) after first-list child append | styleInvalidations=9, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit) after direct child append | styleInvalidations=11, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=13, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: slotted-shadow-host-default: :has(.hit, .fallback) after first-list child append | styleInvalidations=11, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached child mutation: part-document: :has(.hit) after direct child append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(.hit) after direct child append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=2, hasResultCacheHits=0, hasResultCacheMisses=2
PASS: detached child mutation: part-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=4, hasResultCacheHits=0, hasResultCacheMisses=4
PASS: detached child mutation: part-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=6, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=3, hasResultCacheHits=0, hasResultCacheMisses=3
PASS: detached child mutation: part-shadow-host-document: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-document: :has(.hit) after direct child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=3, hasResultCacheHits=0, hasResultCacheMisses=3
PASS: detached child mutation: part-shadow-host-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-document: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=10, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=5, hasResultCacheHits=0, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-document: :has(.hit, .fallback) after first-list child append | styleInvalidations=8, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=1, hasMatchInvocations=5, hasResultCacheHits=0, hasResultCacheMisses=5
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=12, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit) after direct child append | styleInvalidations=12, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=6, hasResultCacheHits=1, hasResultCacheMisses=4
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=14, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit ~ .after) after indirect sibling append | styleInvalidations=14, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=8, hasResultCacheHits=1, hasResultCacheMisses=6
PASS: detached child mutation: part-shadow-host-ancestor: :has(.hit, .fallback) after first-list child append | styleInvalidations=12, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=1, hasResultCacheHits=0, hasResultCacheMisses=1
PASS: detached pseudo-element child mutation: part-shadow-host-ancestor: :has(.hit, .fallback) after first-list child append | styleInvalidations=12, fullStyleInvalidations=0, hasAncestorWalkInvocations=1, hasInvalidationMetadataCandidates=0, hasMatchInvocations=11, hasResultCacheHits=2, hasResultCacheMisses=7
PASS: precomputed detached insertion: descendant class selector | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: precomputed detached insertion stress append: descendant class selector | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0
PASS: precomputed detached insertion stress prepend: descendant class selector | styleInvalidations=3, fullStyleInvalidations=0, elementStyleRecomputations=4, elementStyleNoopRecomputations=3, elementInheritedStyleRecomputations=0, elementInheritedStyleNoopRecomputations=0, hasAncestorWalkInvocations=0, hasInvalidationMetadataCandidates=0, hasMatchInvocations=0, hasResultCacheHits=0, hasResultCacheMisses=0

View file

@ -1,10 +1,37 @@
<!DOCTYPE html>
<script src="../include.js"></script>
<style>
body.hide-pending-descendant #pending-descendant-invalidation-target {
display: none;
}
#pending-has-invalidation-container:has(.hide-target) {
display: none;
}
body.shrink-media-query-iframe #parent-pending-media-query-iframe {
width: 50px;
}
body.hide-pending-slotted #pending-invalidation-slotted-target {
display: none;
}
#computed-style-hidden-subtree {
display: none;
color: rgb(1, 2, 3);
}
#computed-style-hidden-subtree.changed {
color: rgb(4, 5, 6);
}
</style>
<input id="visible">
<div id="hidden-container" hidden>
<input id="hidden-ancestor">
</div>
<input id="display-none" style="display: none">
<input id="display-none-after-style-change" style="width: 123px">
<div id="display-contents" style="display: contents" tabindex="0">display contents</div>
<div id="slotted-focus-host">
<input id="slotted-hidden-focus-target">
@ -13,21 +40,52 @@
<div id="ancestor-hidden-after-focus">
<input id="focused-then-ancestor-hidden">
</div>
<div id="display-none-ancestor-after-style-change">
<input id="display-none-ancestor-target">
</div>
<input id="animated-display-none-target">
<div id="animated-display-none-ancestor">
<input id="animated-display-none-ancestor-target">
</div>
<input id="pending-descendant-invalidation-target">
<div id="pending-has-invalidation-container">
<input id="pending-has-invalidation-target">
</div>
<div id="pending-invalidation-slotted-host">
<input id="pending-invalidation-slotted-target">
</div>
<div id="computed-style-hidden-subtree">
<span id="computed-style-hidden-target"></span>
</div>
<script>
test(() => {
promiseTest(async () => {
const visible = document.getElementById("visible");
const hiddenAncestor = document.getElementById("hidden-ancestor");
const hiddenContainer = document.getElementById("hidden-container");
const displayNone = document.getElementById("display-none");
const displayNoneAfterStyleChange = document.getElementById("display-none-after-style-change");
const displayContents = document.getElementById("display-contents");
const slottedFocusHost = document.getElementById("slotted-focus-host");
const slottedHiddenFocusTarget = document.getElementById("slotted-hidden-focus-target");
const focusedThenDisplayNone = document.getElementById("focused-then-display-none");
const ancestorHiddenAfterFocus = document.getElementById("ancestor-hidden-after-focus");
const focusedThenAncestorHidden = document.getElementById("focused-then-ancestor-hidden");
const displayNoneAncestorAfterStyleChange = document.getElementById("display-none-ancestor-after-style-change");
const displayNoneAncestorTarget = document.getElementById("display-none-ancestor-target");
const animatedDisplayNoneTarget = document.getElementById("animated-display-none-target");
const animatedDisplayNoneAncestor = document.getElementById("animated-display-none-ancestor");
const animatedDisplayNoneAncestorTarget = document.getElementById("animated-display-none-ancestor-target");
const pendingDescendantInvalidationTarget = document.getElementById("pending-descendant-invalidation-target");
const pendingHasInvalidationContainer = document.getElementById("pending-has-invalidation-container");
const pendingHasInvalidationTarget = document.getElementById("pending-has-invalidation-target");
const pendingInvalidationSlottedHost = document.getElementById("pending-invalidation-slotted-host");
const pendingInvalidationSlottedTarget = document.getElementById("pending-invalidation-slotted-target");
const computedStyleHiddenSubtree = document.getElementById("computed-style-hidden-subtree");
const computedStyleHiddenTarget = document.getElementById("computed-style-hidden-target");
const slottedShadowRoot = slottedFocusHost.attachShadow({ mode: "open" });
slottedShadowRoot.innerHTML = `<div id="slot-container" style="display: none"><slot></slot></div>`;
const slotContainer = slottedShadowRoot.getElementById("slot-container");
pendingInvalidationSlottedHost.attachShadow({ mode: "open" }).innerHTML = `<slot></slot>`;
visible.focus();
println(`after visible.focus(): ${document.activeElement.id}`);
@ -39,6 +97,107 @@
displayNone.focus();
println(`after display none input.focus(): ${document.activeElement.id}`);
displayNoneAfterStyleChange.offsetWidth;
displayNoneAfterStyleChange.style.display = "none";
displayNoneAfterStyleChange.focus();
println(`after display none from dirty style input.focus(): ${document.activeElement.id}`);
println(`after display none from dirty style offsetWidth: ${displayNoneAfterStyleChange.offsetWidth}`);
displayNoneAncestorAfterStyleChange.style.display = "none";
displayNoneAncestorTarget.focus();
println(`after display none ancestor from dirty style input.focus(): ${document.activeElement.id}`);
getComputedStyle(computedStyleHiddenTarget).color;
computedStyleHiddenSubtree.classList.add("changed");
println(`after getComputedStyle in dirty display none subtree: ${getComputedStyle(computedStyleHiddenTarget).color}`);
getComputedStyle(animatedDisplayNoneTarget).display;
const displayNoneAnimation = animatedDisplayNoneTarget.animate({ display: ["block", "none"] }, { duration: 1000, fill: "forwards" });
displayNoneAnimation.pause();
displayNoneAnimation.currentTime = 1000;
animatedDisplayNoneTarget.focus();
println(`after display none from pending animation input.focus(): ${document.activeElement.id}`);
getComputedStyle(animatedDisplayNoneAncestor).display;
const ancestorDisplayNoneAnimation = animatedDisplayNoneAncestor.animate({ display: ["block", "none"] }, { duration: 1000, fill: "forwards" });
ancestorDisplayNoneAnimation.pause();
ancestorDisplayNoneAnimation.currentTime = 1000;
animatedDisplayNoneAncestorTarget.focus();
println(`after display none ancestor from pending animation input.focus(): ${document.activeElement.id}`);
getComputedStyle(pendingDescendantInvalidationTarget).display;
document.body.classList.add("hide-pending-descendant");
pendingDescendantInvalidationTarget.focus();
println(`after display none from pending descendant invalidation input.focus(): ${document.activeElement.id}`);
getComputedStyle(pendingInvalidationSlottedTarget).display;
document.body.classList.add("hide-pending-slotted");
visible.focus();
pendingInvalidationSlottedTarget.offsetWidth;
pendingInvalidationSlottedTarget.focus();
println(`after display none from pending slotted invalidation input.focus(): ${document.activeElement.id}`);
getComputedStyle(pendingHasInvalidationContainer).display;
const hideTarget = document.createElement("span");
hideTarget.className = "hide-target";
pendingHasInvalidationContainer.append(hideTarget);
pendingHasInvalidationTarget.focus();
println(`after display none from pending :has invalidation input.focus(): ${document.activeElement.id}`);
const mediaQueryIframe = document.createElement("iframe");
mediaQueryIframe.width = "200";
mediaQueryIframe.height = "50";
mediaQueryIframe.srcdoc = `
<style>
@media (max-width: 100px) {
#media-query-focus-target {
display: none;
}
}
</style>
<input id="media-query-focus-target">
`;
await new Promise(resolve => {
mediaQueryIframe.addEventListener("load", resolve, { once: true });
document.body.append(mediaQueryIframe);
});
const mediaQueryFocusTarget = mediaQueryIframe.contentDocument.getElementById("media-query-focus-target");
getComputedStyle(mediaQueryFocusTarget).display;
mediaQueryIframe.width = "50";
mediaQueryIframe.getBoundingClientRect();
mediaQueryFocusTarget.focus();
println(`after display none from pending media query input.focus(): ${mediaQueryIframe.contentDocument.activeElement.tagName}`);
const parentPendingMediaQueryIframe = document.createElement("iframe");
parentPendingMediaQueryIframe.id = "parent-pending-media-query-iframe";
parentPendingMediaQueryIframe.width = "200";
parentPendingMediaQueryIframe.height = "50";
parentPendingMediaQueryIframe.srcdoc = `
<style>
@media (max-width: 100px) {
#parent-media-query-focus-target {
display: none;
}
}
</style>
<input id="parent-media-query-focus-target">
`;
await new Promise(resolve => {
parentPendingMediaQueryIframe.addEventListener("load", resolve, { once: true });
document.body.append(parentPendingMediaQueryIframe);
});
const parentMediaQueryFocusTarget = parentPendingMediaQueryIframe.contentDocument.getElementById("parent-media-query-focus-target");
getComputedStyle(parentMediaQueryFocusTarget).display;
document.body.classList.add("shrink-media-query-iframe");
parentMediaQueryFocusTarget.focus();
println(`after display none from pending parent media query input.focus(): ${parentPendingMediaQueryIframe.contentDocument.activeElement.tagName}`);
visible.focus();
const detached = document.createElement("input");
detached.id = "detached";
detached.focus();
println(`after detached input.focus(): ${document.activeElement.id}`);
displayContents.focus();
println(`after display contents div.focus(): ${document.activeElement.id}`);

View file

@ -5,6 +5,8 @@
.red { color: red; }
.green { color: green; }
.blue { color: blue; }
#whole-subtree-target[open] span { color: green; }
#whole-subtree-target:not([open]) span { color: red; }
</style>
<div id="parent">
<div id="target">hello</div>
@ -12,9 +14,15 @@
</div>
<div id="slot-host">
<template shadowrootmode="open">
<style>
slot { --slot-color: red; }
slot.green { --slot-color: green; }
::slotted(.uses-slot-custom-property) { color: var(--slot-color); }
</style>
<slot id="the-slot"></slot>
</template>
<span id="slotted-child">slotted</span>
<span id="slotted-custom-property-child" class="uses-slot-custom-property">slotted custom property</span>
</div>
<div id="shadow-host-2">
<template shadowrootmode="open">
@ -27,6 +35,17 @@
<div id="inherit-parent" class="red">
<div id="inherit-child">inherits</div>
</div>
<details id="whole-subtree-target" open>
<summary>summary</summary>
<div>
<span id="whole-subtree-path-target">path target</span>
</div>
<div>
<div>
<span id="whole-subtree-off-path-target">off path target</span>
</div>
</div>
</details>
<script>
test(() => {
const target = document.getElementById("target");
@ -36,12 +55,19 @@
const slotHost = document.getElementById("slot-host");
const inheritParent = document.getElementById("inherit-parent");
const inheritChild = document.getElementById("inherit-child");
const slottedCustomPropertyChild = document.getElementById("slotted-custom-property-child");
const wholeSubtreeTarget = document.getElementById("whole-subtree-target");
const wholeSubtreePathTarget = document.getElementById("whole-subtree-path-target");
const wholeSubtreeOffPathTarget = document.getElementById("whole-subtree-off-path-target");
// Force initial style computation.
getComputedStyle(target).color;
getComputedStyle(sibling).color;
getComputedStyle(slottedChild).color;
getComputedStyle(slottedCustomPropertyChild).color;
getComputedStyle(inheritChild).color;
getComputedStyle(wholeSubtreePathTarget).color;
getComputedStyle(wholeSubtreeOffPathTarget).color;
// 1. Reading computed style without changes should return correct values.
println(`1: ${getComputedStyle(target).color}`);
@ -86,5 +112,18 @@
// 8. Multiple reads without changes return consistent values.
println(`8a: ${getComputedStyle(target).color}`);
println(`8b: ${getComputedStyle(target).color}`);
// 9. A targeted update through one branch must not clear whole-subtree
// invalidation for descendants in other branches.
wholeSubtreeTarget.open = false;
println(`9a: ${getComputedStyle(wholeSubtreePathTarget).color}`);
document.body.offsetWidth;
println(`9b: ${getComputedStyle(wholeSubtreeOffPathTarget).color}`);
// 10. A targeted update of a slot whose custom properties changed must
// dirty assigned slottables that inherit through the flat tree.
theSlot.classList.add("green");
getComputedStyle(theSlot).display;
println(`10: ${getComputedStyle(slottedCustomPropertyChild).color}`);
});
</script>

View file

@ -61,7 +61,7 @@
assertEqual("unmatched 2 after ancestor attribute change", readProbe(unmatched2), BASE);
assertEqual("unmatched 3 after ancestor attribute change", readProbe(unmatched3), BASE);
assertEqual("matched after ancestor attribute change", readProbe(matched), MATCH);
printPassWithCounters("attribute class match set requires class attribute presence");
printPassWithoutRecomputeCounters("attribute class match set requires class attribute presence");
document.getElementById("class-presence-style").remove();
runClassRemovalCase("[class] descendant loses match", "[class] .target", fixture => {

View file

@ -30,12 +30,12 @@
mutating.classList.add("needle");
assertEqual("needle target after relevant mutation", readProbe(needleTarget), MATCH);
assertEqual("other target after unrelated mutation", readProbe(otherTarget), BASE);
printPassWithCounters("class mutation invalidates affected :has() rule");
printPassWithoutRecomputeCounters("class mutation invalidates affected :has() rule");
resetStyleCounters();
mutating.classList.add("other");
assertEqual("other target after relevant mutation", readProbe(otherTarget), MATCH);
printPassWithCounters("class mutation still invalidates matching :has() rule");
printPassWithoutRecomputeCounters("class mutation still invalidates matching :has() rule");
const style = addStyle(document.head, `.empty-dir-auto-scope .outer:has(.auto:empty) .target { ${MATCH_DECLARATION} }`);
const fixture = makeElement("section", { className: "empty-dir-auto-scope" });
@ -52,7 +52,7 @@
resetStyleCounters();
text.data = "text";
assertEqual("dir=auto empty text after mutation", readProbe(target), BASE);
printPassWithCounters("dir=auto text mutation invalidates :has(:empty)");
printPassWithoutRecomputeCounters("dir=auto text mutation invalidates :has(:empty)");
style.remove();
fixture.remove();
@ -71,7 +71,7 @@
resetStyleCounters();
mutate(subject);
assertEqual(`${name} after mutation`, readProbe(target), expectedAfter ? MATCH : BASE);
printPassWithCounters(`${name} invalidates :has()`);
printPassWithoutRecomputeCounters(`${name} invalidates :has()`);
style.remove();
fixture.remove();

View file

@ -82,7 +82,7 @@
selectorCase.mutate(context);
const after = readProbe(context.target);
println(`RESULT: ${selectorCase.name}: initial=${initial} expectedInitial=${selectorCase.initial ? MATCH : BASE}, after=${after} expectedAfter=${selectorCase.after ? MATCH : BASE}`);
printPassWithCounters(`non-subject :has sibling combinator: ${selectorCase.name}`);
printPassWithoutRecomputeCounters(`non-subject :has sibling combinator: ${selectorCase.name}`);
} finally {
style.remove();
fixture.remove();

View file

@ -22,8 +22,8 @@
const selectorCase = childMutationCases.find(c => c.name === name);
if (!selectorCase)
throw new Error(`detached scope refers to unknown case: ${name}`);
runDetachedReconnectCase(scope, selectorCase);
runDetachedReconnectCase(scope, selectorCase, "::before");
runDetachedReconnectCase(scope, selectorCase, "", { omitRecomputeCounters: true });
runDetachedReconnectCase(scope, selectorCase, "::before", { omitRecomputeCounters: true });
}
}

View file

@ -26,6 +26,17 @@ function styleCounterSummary() {
);
}
function styleCounterSummaryWithoutRecomputations() {
const counters = internals.getStyleInvalidationCounters();
return (
`styleInvalidations=${counters.styleInvalidations}, fullStyleInvalidations=${counters.fullStyleInvalidations}, ` +
`hasAncestorWalkInvocations=${counters.hasAncestorWalkInvocations}, ` +
`hasInvalidationMetadataCandidates=${counters.hasInvalidationMetadataCandidates}, ` +
`hasMatchInvocations=${counters.hasMatchInvocations}, ` +
`hasResultCacheHits=${counters.hasResultCacheHits}, hasResultCacheMisses=${counters.hasResultCacheMisses}`
);
}
function styleCounters() {
return internals.getStyleInvalidationCounters();
}
@ -34,6 +45,10 @@ function printPassWithCounters(testName) {
println(`PASS: ${testName} | ${styleCounterSummary()}`);
}
function printPassWithoutRecomputeCounters(testName) {
println(`PASS: ${testName} | ${styleCounterSummaryWithoutRecomputations()}`);
}
function hasWalkCounterDetailSummary() {
const counters = styleCounters();
return (
@ -277,6 +292,7 @@ function runCase({
after,
pseudoElement = "",
skipInitialRead = false,
omitRecomputeCounters = false,
fixtureOptions = {},
}) {
if (
@ -297,7 +313,8 @@ function runCase({
resetStyleCounters();
mutate(subject, fixture);
assertEqual(`${testName} after mutation`, readProbe(target, pseudoElement), after ? MATCH : BASE);
printPassWithCounters(testName);
if (omitRecomputeCounters) printPassWithoutRecomputeCounters(testName);
else printPassWithCounters(testName);
} finally {
cleanup();
}
@ -431,6 +448,7 @@ const childMutationCases = [
selector: ":empty",
initial: true,
after: false,
omitRecomputeCounters: true,
mutate: subject => subject.appendChild(makeElement("span")),
},
{
@ -2036,13 +2054,14 @@ const descendantStateMutationCases = [
},
];
function runDetachedReconnectCase(scope, selectorCase, pseudoElement = "") {
function runDetachedReconnectCase(scope, selectorCase, pseudoElement = "", options = {}) {
runCase({
suite: pseudoElement ? "detached pseudo-element child mutation" : "detached child mutation",
scope,
initial: selectorCase.initial,
after: selectorCase.after,
pseudoElement,
omitRecomputeCounters: options.omitRecomputeCounters,
...selectorCase,
mutate: (subject, fixture) => {
fixture.remove();