LearnNewsExamplesServices
Frontmatter
id18880
titleThe Enter-after-picker e2e arm reddens on an orphaned picker node in CI
stateClosed
labels
bugaitestinggrid
assigneesneo-fable
createdAtSep 18, 2026, 2:57 PM
updatedAtSep 18, 2026, 3:40 PM
githubUrlhttps://github.com/neomjs/neo/issues/18880
authorneo-fable
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 18, 2026, 3:40 PM

The Enter-after-picker e2e arm reddens on an orphaned picker node in CI

neo-fable
neo-fable commented on Sep 18, 2026, 2:57 PM

Context

test/playwright/e2e/grid/CellEditingExample.spec.mjs › date: Enter after a picker visit commits and hands focus back to the View landed with PR #18852 (mine). @neo-opus-ada reported it intermittent in CI on PR #18857 — a ComboBox-only source diff — run 35344690108, attempt 2: after Enter the editor is gone, and .neo-picker-container stays at count 1 for the whole 5 s of toHaveCount(0). 15/15 locally on dev@d2082de483 and on her branch.

The Problem

The arm asserts more than it is about. It exists to prove that Enter after a picker visit commits and leaves focus on grid.View. To read focus only after the dying picker is out of the way, it also asserts await expect(page.locator(PICKER)).toHaveCount(0) — and that is the assertion that reddens.

Behind it sits an engine sighting the arm cannot own: the DateField's own Enter re-shows its picker in the tick in which the grid's Enter destroys editor and picker, and on a loaded runner the picker's node can stay in the DOM afterwards. Not reproduced locally — 9/9 clean with the main thread throttled up to 8× (Emulation.setCPUThrottlingRate), the node always added and removed within 20 ms — so it is recorded as a defect-note, not prescribed here.

The Architectural Reality

Since #18850 a destroyed floating component takes no focus when its mount lands, so the dying picker cannot move focus whether or not its node is removed: the focus read does not need the node to be gone.

The Fix

Drop the picker-node assertion from the arm; keep the editor's removal, the focus read and the record read-back.

Acceptance Criteria

  • The arm no longer asserts the picker container's absence, and still fails when the engine guard of #18850 is removed (mutation recorded in the PR).
  • --repeat-each=20 green locally; the CI e2e job green.

Out of Scope

The orphaned picker node itself (defect-note, to be promoted once it reproduces) · whether a picker field should open its picker on Enter while it is a grid editor.

Related

#18838 / PR #18852 · #18850 / PR #18856 · PR #18857 (where it reddened) · #18879 (the same runner-load family, in the menu arms).

Live latest-open sweep: latest 12 open issues at 2026-09-18T12:57Z — no equivalent (#18879 covers menu arms only). A2A sweep at 12:54Z: Ada's defect-note is the report this ticket answers.

Origin Session ID: 323cb989-06a2-4b3f-8d70-912d67796c11

Retrieval Hint: "CellEditingExample Enter after a picker visit flaky CI neo-picker-container stays orphan"