Skip to content

Add cache-invalidation tests for dynamic containing-block changes - #1146

Closed
nicoburns wants to merge 2 commits into
devin/1787413254-grid-oof-edge-casesfrom
devin/1787415512-oof-invalidation-tests
Closed

Add cache-invalidation tests for dynamic containing-block changes#1146
nicoburns wants to merge 2 commits into
devin/1787413254-grid-oof-edge-casesfrom
devin/1787415512-oof-invalidation-tests

Conversation

@nicoburns

Copy link
Copy Markdown
Member

Objective

Add hand-written test coverage verifying that out-of-flow hoisting stays correct across relayouts with hot caches when the containing-block structure changes dynamically. Test-only change (no RELEASES.md update needed).

New tests in tests/hand_written/oof_hoisting.rs:

  • claim_change_relayouts_with_hot_cache: an intermediate ancestor toggles position: staticrelative; the abspos box must be claimed by (and positioned relative to) the new containing block, and move back when the style is reverted.
  • fixed_claim_change_relayouts_with_hot_cache: a fixed box inside an abspos ancestor is claimed by the root; dirtying only the fixed box still relays it out via the root.
  • content_change_inside_hoisted_subtree: growing a leaf inside a hoisted abspos subtree resizes the hoisted box even when siblings hit the cache.

Context

The CSS WPT tests for dynamic containing-block changes (e.g. transform-containing-block-dynamic-1b) are script-driven and can't run in the current test infrastructure, so these scenarios are ported to hand-written Rust tests instead. Companion Blitz-side tests (style-attribute mutation, :hover-driven restyles, DOM insertion/removal) are added on DioxusLabs/blitz#763.

Stacked on #1144. All tests pass against the current implementation — this locks in the cache-invalidation behavior rather than fixing a bug.

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/65c5463061c8403bade7888271d5eeb4
Open in Devin Desktop: https://dioxus.staging.devinenterprise.com/desktop/session/65c5463061c8403bade7888271d5eeb4?variant=devin-insiders
Requested by: @nicoburns

@staging-devin-ai-integration

Copy link
Copy Markdown

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787415512-oof-invalidation-tests branch from a214d51 to 16a1739 Compare August 22, 2026 21:01
@staging-devin-ai-integration
staging-devin-ai-integration Bot changed the base branch from devin/1787404843-oof-dispatcher to devin/1787413254-grid-oof-edge-cases August 22, 2026 21:01
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787415512-oof-invalidation-tests branch from 16a1739 to c1f655d Compare August 23, 2026 19:04
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787413254-grid-oof-edge-cases branch 2 times, most recently from 38df075 to 7376524 Compare August 23, 2026 19:15
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787415512-oof-invalidation-tests branch from c1f655d to 93e5553 Compare August 23, 2026 19:15
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787413254-grid-oof-edge-cases branch from 7376524 to 0c4873c Compare August 24, 2026 19:15
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787415512-oof-invalidation-tests branch from 93e5553 to 290551f Compare August 24, 2026 19:15
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787413254-grid-oof-edge-cases branch from 0c4873c to 12784ef Compare August 25, 2026 16:26
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787415512-oof-invalidation-tests branch from 290551f to 817c012 Compare August 25, 2026 16:26
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787415512-oof-invalidation-tests branch from 817c012 to cda9158 Compare August 25, 2026 16:38
@staging-devin-ai-integration
staging-devin-ai-integration Bot force-pushed the devin/1787413254-grid-oof-edge-cases branch from 12784ef to 3917df7 Compare August 25, 2026 16:38
@staging-devin-ai-integration

Copy link
Copy Markdown

Absorbed into #1144 (the PerformLayout-only gating fix and the cache-invalidation tests now live there).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant