Skip to content

test(ui-react): capture destination motion before activation returns - #1975

Closed
schlessera wants to merge 1 commit into
mainfrom
test/1915-capture-opening-motion-3d746bc3-c
Closed

schlessera wants to merge 1 commit into
mainfrom
test/1915-capture-opening-motion-3d746bc3-c

Conversation

@schlessera

@schlessera schlessera commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Refs #1915

What changed

The destination paint proof captures and pauses the real CSS animations in a DOM insertion observer armed before native activation. Sampling after the asynchronous click returns uses those retained objects, so completed fill-none openings cannot disappear before the 0/150/300ms paint checks. All existing animation, paint, pointer/theme/width, safe-area, hit-target and keyboard assertions remain.

Why this shape

The source-bound CPU-quota reproduction shows both native opening animations ending before the click returned. A fixture-local observer captures them in the insertion microtask. No product animation, duration, timeout, guard or browser configuration changes ship in this PR.

The runtime regression plays the actual captured openings to native completion, verifies their disappearance from the live animation set, and proves the retained objects can still be sought for paint proof. It follows the two named opening effects separately from loading animations.

Proof

Current candidate eefe9203fdb5c8e71582cba082371a89efb5cbaa, parent fb219e069a8afd7fbc5eac6524b7a77ec08a7560:

  • bun run check:pr --base origin/main: 54 tests / 181 assertions pass, including the metadata/leakage/lint preflight.
  • bun run typecheck: strict types pass.
  • Full focused pointer matrix: 420 cases / three files pass in 29.04s on the refreshed candidate.

Runtime controls used the d2b4cf9 base plus the test change, before refreshing over #1954's unrelated draft tests and wait documentation; the browser inputs are unchanged by that refresh:

  • Late-live-lookup mutation: all three pointer projects fail the named opening references survive a sample after native completion assertion, after the native opening effects leave the live set. Mutation restored.
  • Restored regression under verified Docker NanoCpus 100000000: one coarse-pointer/light-320 case passes within the unchanged deadline (5393ms body / 63.20s run), with 139 explicitly name-filtered cases. The temporary quota/name filter are restored. This is a focused stressed regression, not a claim that the entire severely restricted matrix passes.
  • The original pre-fix quota receipt has one exact zero-animation assertion and seven generic deadline failures; those other failures are not called reproductions or corrected by a wider timeout.

Initial ready run 38718847475, attempt 1, passes every selected job and aggregate at head 34398cd4f73ea33b7d2430d02d935fad51bcf24a. All 13 selected checkout logs agree on b284d317d6806db7e73565e241f4d9e7f94230c8, parents 5c453d865d55993c86861da3f428d324405bf506 / 34398cd4f73ea33b7d2430d02d935fad51bcf24a, tree 0ecf0a9fb0134d881b9b250953b2e7603bce1dd1; API and local Git agree. Browser shards pass 4580 / four existing exclusions and 4228 / six existing exclusions, including the new regression in all three projects. Pack is planner-intentionally unselected. Head-only contract run 38718853060 separately passes at 34398cd.

Main advanced with #1899's share-review UI, Settings passkey tab and browser-project changes. Those affect fixture inputs, so the old run was allowed to finish fully, then the candidate was refreshed. The changed browser test is byte-identical across that refresh; rebuild, preflight, types and focused matrix pass at the new source. Refreshed ready run 38721875723, attempt 1, is failed, with a separate native PDF page-creation failure tracked in #1978. All 13 selected checkout logs agree on cb221fba3385ec6099145e792629e93bf03a0fef, parents fb219e069a8afd7fbc5eac6524b7a77ec08a7560 / eefe9203fdb5c8e71582cba082371a89efb5cbaa, tree 454c743cf990dc6a0a68c357c6f6f77eb1da2ad6; API, Git and the failed shard artifact agree. Both browser shards pass (4580 / four existing exclusions and 4228 / six existing exclusions), including all three new regression instances. Both layouts, runtime, captures, verify and unit shards 1/2/4 pass. Unit shard 3 fails (891 pass / one fail / 13584 assertions); the aggregate fails. Packaging is intentionally unselected. Head-only contract run 38721938525 separately passes eefe920.

The failure is TargetCloseError: Protocol error (Target.createTarget): Target closed from actual Puppeteer newPage in the final finished-PDF link case, before PDF assertions. Its renderer/test source is unchanged, and the browser test edited here is excluded from that native unit inventory. Close/disconnect cause is unknown. No failed job was rerun or gate weakened; the completed failed run was retained before converting this PR to draft. The earlier qualification is not relabelled as proof for the new combined tree.

Checklist

  • Focused local preflight/behavioral receipts and complete selected hosted proof passed; actual head/base/job checkout evidence is in Proof.
  • Acceptance criteria from the issue are all met, or the gap is named below.
  • PR and issue target release milestone 0.44.0, after live publication/milestone verification.
  • No changeset: this changes only test observation and its runtime regression.
  • No personal data in the diff.
  • No integration contract change.
  • No documented code citation points into the changed file; no documentation drift introduced.

Anything left open

Blocked by #1978. Keep this PR draft and #1915 open until the native PDF browser-connection failure has a diagnosed causal control and scoped repair. Then inspect current main, refresh only for relevant changes and complete selected current-candidate hosted proof before merge. Preserve every original #1915 acceptance criterion and its source-bound red/mutation receipts. This correction is unmerged and qualification remains incomplete.

@schlessera schlessera added this to the 0.44.0 milestone Oct 15, 2026
@schlessera schlessera added type: test Coverage, harness or proof work with no behaviour change. area: ui-react React chat/files/voice components, stores, WebSocket transport. area: ui-kit The presentational design kit: components, tokens, Storybook, visual baselines. area: ci CI workflows, the gates they run, release scripts, packaging. labels Oct 15, 2026
@schlessera

Copy link
Copy Markdown
Owner Author

Superseded by merged #1979, squash cbf2bb87f8eee79f971099aa4858262888f087ae. The animation fixture is the identical reviewed output from this draft; fresh run 38778870365 passes all 14 selected jobs and aggregate with the focus repair, native diagnostics and current optimizer base included. Actual squash parent/tree match that tested combined state and the squash is present on main. #1915 is closed with milestone 0.44.0. This draft's original source, failed receipts and earlier qualifications remain preserved; no push is made to its branch.

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

Labels

area: ci CI workflows, the gates they run, release scripts, packaging. area: ui-kit The presentational design kit: components, tokens, Storybook, visual baselines. area: ui-react React chat/files/voice components, stores, WebSocket transport. type: test Coverage, harness or proof work with no behaviour change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant