jkleinsc

#55784: test: verify shared texture pixels before waiting on release

Merged
Created: Nov 12, 2026, 2:16:27 PM
Merged: Nov 13, 2026, 11:07:09 AM
4 comments
Target: main

Description of Change

Follow-up to #55653, which didn't fully resolve #55391. Since that merged, successfully imported and rendered with subtle api has timed out on macOS arm64 shards on main and 46-x-y, and with retries disabled each one turns the job red.

In all three failures the test stalled after the texture was sent to the receiver, while waiting for shared-texture-done. That signal only arrives once the receiver's VideoFrame teardown, the WebGPU external texture destroy, the GPU sync tokens and the IPC have all completed, and that chain can take several seconds on a busy runner. On a green run in the same workflow, the managed test took 8,991ms against its 10s cap. The subtle test runs first in the file, so it also absorbs the WebGPU and offscreen-rendering startup cost.

This change:

  • Has the receiver send shared-texture-rendered once it has drawn the frame, and verifies pixels at that point. The release handshake is still checked, afterwards.
  • Gives each wait a labeled 20s deadline, so a stall reports which step hung instead of a bare test timeout.
  • Drops the 10s per-test overrides in favor of the suite default (30s).
  • Always releases the main-process import, even when a test fails partway.

Failures since #55653:

Refs #55391

Checklist

🤖 Generated with Claude Code

Notes: none

Backports

44-x-y
Merged
PR Number
#55798
Merged At
Nov 13, 2026, 12:07:20 PM
Released In
Not yet
Release Date
Not yet
45-x-y
Merged
PR Number
#55797
Merged At
Nov 13, 2026, 12:10:42 PM
Released In
Not yet
Release Date
Not yet
46-x-y
Merged
PR Number
#55796
Merged At
Nov 13, 2026, 12:08:24 PM
Released In
Not yet
Release Date
Not yet

Semver Impact

Major
Breaking changes
Minor
New features
Patch
Bug fixes
None
Docs, tests, etc.

Semantic Versioning helps users understand the impact of updates:

  • Major (X.y.z): Breaking changes that may require code modifications
  • Minor (x.Y.z): New features that maintain backward compatibility
  • Patch (x.y.Z): Bug fixes that don't change the API
  • None: Changes that don't affect using facing parts of Electron