Failing test for #19287 - #21529
Closed
johanrd wants to merge 1 commit into
Closed
Conversation
Disabling a focused element fires blur synchronously during render, so a
{{on "blur"}} listener that updates rendered state trips the backtracking
assertion. Recorded as a QUnit todo test (via new @todo support in
moduleFor) so it passes CI while the bug exists and flags when fixed.
Contributor
|
Blur is a synchronous event, so i think the error gavin ran in to was not a regression, but a bugfix |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a failing test for #19287: disabling a focused element fires
blurduring render, and a{{on "blur"}}listener that updates rendered state hits the backtracking assertion.The test is a QUnit
todo: CI stays green while the bug exists, and fails once it is fixed (then flip@todoto@test). Adds@todotomoduleFor, mapping to nativeQUnit.todolike@skip.Prototype fix: johanrd#36 — defers dynamic attribute updates to transaction commit, so DOM writes that dispatch events synchronously (like
disabled→blur) run after the render transaction has closed, the same way modifier install/update is already scheduled. With it, this PR's@todotest flips to a passing@test.A first iteration (johanrd#37) special-cased only
disabled, but the attribute layer already has too many per-name special cases (see #21344), and the generic deferral fixes the whole class — any attribute write that can dispatch a synchronous event — instead of one name. It also moves DOM writes out of the tracked computation. Cost: one closure per changed attribute per rerender.