Skip to content

Flaky on CI, Node 22 only: "mutating a d3 projection invalidates live geometry on the next update" #1

Description

@rameerez

test/projection-dom-adversarial.test.js → "mutating a d3 projection invalidates live geometry on the next update" fails intermittently on CI's Node 22 job and only there.

Evidence

  • Failed on three consecutive main pushes: 2cfa91d, e37297b, 5f09263 (runs 33899867799, 33900298310, 33901825240), each time only the test (22) job; test (24) passed every time.
  • Re-running the failed job on 5f09263 passed with no code change.
  • Locally on Node 22.22.2 the file passes 5/5 runs.

Failure

Expected "actual" to be strictly unequal to: 'custom-3|-58|84|state-1'
  at test/projection-dom-adversarial.test.js:104

After raw.rotate([-90, 0]); map.update({ figureColor }) and settle(), map.projection.key had not changed. The key ends in state-N, so the adapter's re-read of the d3 projection state did not happen before the assertion on that runner.

Suspects

  • settle() waits too little for the update path on the CI runner's Node 22 (a timing race, not a logic bug), or
  • the d3 state signature (it(t)) memoises per projection object and the mutation is read late.

Until it is fixed, a red test (22) with this single failure is noise: re-run the job.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions