LearnNewsExamplesServices
Frontmatter
id12936
titleDedicated locked-column grid fixture for whitebox-e2e (decouple from devindex)
stateClosed
labels
enhancementaitesting
assigneesneo-opus-ada
createdAtJun 12, 2026, 2:38 AM
updatedAtJun 12, 2026, 12:06 PM
githubUrlhttps://github.com/neomjs/neo/issues/12936
authorneo-fable-clio
commentsCount5
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 12, 2026, 12:06 PM

Dedicated locked-column grid fixture for whitebox-e2e (decouple from devindex)

Closed v13.1.0/archive-v13-1-0-chunk-1 enhancementaitesting
neo-fable-clio
neo-fable-clio commented on Jun 12, 2026, 2:38 AM

Context

Flagged by @neo-opus-ada (A2A 4968699a, 2026-06-12) the moment #12933/#12935 (devindex locked-column removal) went live, and confirmed by sweep: the lock-removal doesn't just raise the stakes for locked-column test coverage — it relocates them. Assigned to Ada per her explicit offer ("I'm glad to own standing up that fixture"); filed by the #12933 lane owner.

Policy note (operator review on PR #12935, supersedes this body's first revision): the affected specs are NOT skipped — they stay failing-honest post-merge. E2e runs outside CI, so red costs no pipeline and is the loud tracker pressing this ticket; hardcoded describe.skip would be the silent state and would usurp NEO_TEST_SKIP_CI (the env-layer CI-exclusion mechanism, if these specs ever enter CI).

Release classification: ON the board — #12935 ships with three e2e specs known-failing against this ticket; the fixture migration turns them green.

The Problem

Three whitebox-e2e specs assert locked-column truth against the live devindex app, whose locked config is removed by #12933 / PR #12935:

Spec Dependency State post-#12935
test/playwright/e2e/GridColumnCrossBodyDnD.spec.mjs (#12807 oracle) devindex multi-region header DOM; lockedStartColumns worker truth failing-honest, one-line ticket-ref-ok pointer here
test/playwright/e2e/GridColumnOverdragScroll.spec.mjs (#12906/#12907 era) lockedStartWidth geometry; "locked region frozen" assertions failing-honest, one-line ticket-ref-ok pointer here
test/playwright/e2e/GridThumbDragDevIndex.spec.mjs queries .neo-locked-start/.neo-locked-end cell boundaries failing-honest, untouched (its 28 lines of pre-hook trailing whitespace gate any edit — the cleanup rides this ticket's migration commit, hook-enforced)

The locked-column defect class (#12883 / #12929 / #12930 / #12932) needs a live testbed the day after devindex stops being one.

The Architectural Reality

  • The dynamic-locking pattern is proven: GridBigDataMultiBodyNL.spec.mjs builds locked topology at runtime via the NL fixture (app.setProperties(colId, {locked})) — removal-proof by construction.
  • But the three failing specs carry devindex-specific geometry (column widths, region compositions, scroll math) — retargeting them is real per-spec work, not a find-replace.
  • test/playwright/unit/grid/BodyCellMapping.spec.mjs is the counter-example to imitate where possible: it mirrors the devindex shape with in-test column literals — self-contained, unaffected.

The Fix (shape — owner's call on specifics)

  1. A minimal, purpose-built locked-grid fixture target (small example app or test-owned mount) with stable locked regions (e.g. the canonical 3-start/1-end shape the defect family was found on) — geometry chosen for test math, never for demo aesthetics, so it has no reason to churn.
  2. Migrate the three failing specs onto it — each goes green in its migration commit (the ticket-ref-ok pointer lines come out in the same commits; ThumbDrag's migration commit includes its whitespace cleanup).
  3. Becomes the designated home for: #12930 AC #3 (cell-generation regression — coordinate with @neo-fable-clio at fix-shape time), #12883's locked-end re-home repro (@neo-fable), and future locked-column whitebox coverage. Sequencing input from @neo-fable (A2A): GridColumnOverdragScroll migrates first — its two legs are the regression net for three of the family's fixes.

Acceptance Criteria

  • Fixture target exists with stable locked regions + documented geometry contract.
  • All three specs migrated + green against the fixture (pointer comments removed; ThumbDrag whitespace cleaned in its migration commit).
  • #12930 / #12883 repro+regression homes pointed here (comments on both).

Out of Scope

  • The defect fixes themselves (#12929/#12930/#12932/#12883).
  • devindex changes (done via #12933/PR #12935).
  • Responsive lock states (#12934).

Related

#12933 / PR #12935 (the forcing event) · #12807 (the oracle this re-homes) · #12930, #12883 (consumers) · GridBigDataMultiBodyNL.spec.mjs (the dynamic-locking pattern).

Live latest-open sweep: checked latest 10 open issues at 2026-06-12T00:39Z; no equivalent found. A2A in-flight sweep: clean — assignment per the owner's explicit A2A offer.

Origin Session ID: e6b095bb-4d88-4aeb-a0ec-7d47e0f8f7ce

Retrieval Hint: "locked column grid fixture whitebox e2e devindex decoupling failing specs"

Body revised 2026-06-12 ~01:10Z by the author (per Euclid's #12935 review caveat): skip/un-skip wording replaced with the final failing-honest policy throughout — comments below from before that revision reference the earlier wording.

tobiu referenced in commit d6d6a1c - "test(grid): dedicated locked-column fixture; migrate CrossBodyDnD + OverdragScroll whitebox-e2e onto it (#12936) (#12945) on Jun 12, 2026, 5:22 AM