ckerr

#54726: test: run more fullscreen specs serially

Merged
Created: Oct 7, 2026, 3:25:15 PM
Merged: Oct 8, 2026, 7:46:09 AM
5 comments
Target: main

Description of Change

Like #54549, tag the remaining specs that move a window in or out of fullscreen (or kiosk) mode as serial.

Under the parallel runner, these transitions can overlap with another worker's, so one never finishes and the test times out.
A fullscreen window can also cover other workers' windows and change their visibility or focus.
Downstream CI on 42-x-y, 43-x-y and 44-x-y hits "BrowserWindow … remembers state before HTML fullscreen" (37 failures) and other fullscreen timeouts.
On 43-x-y and 44-x-y they still fail on builds that already have the earlier upstream fullscreen mitigations.

Tagged serial:

  • api-browser-window.spec.ts:
    • macOS and Windows:
      • "correctly reports maximized state after maximizing then fullscreening"
      • restore() "should not break fullscreen state"
    • macOS:
      • the two setWindowButtonVisibility() fullscreen tests
      • "BrowserWindow.setFullScreen(false) when HTML fullscreen"
      • "does not open non-fullscreenable child windows in fullscreen if parent is fullscreen"
      • "kiosk state"
      • "fullscreen state with resizable set"
    • Windows:
      • "when fullscreen state is changed" and "fullscreen state", both under "window states (excluding Linux)"
      • getNormalBounds() "Fullscreen state"
      • setFullScreen(false) "on windows"
  • chromium.spec.ts: navigator.keyboard "should lock the keyboard" (Linux and Windows).
  • webview.spec.ts: "requestFullscreen from webview".
  • api-web-contents-view.spec.ts: "can be fullscreened".

Only test code changes.
Most of the diff is the formatter rewrapping lines that the tag made too long.

Validation

Ran on a local Linux testing build of main:

  • e test --files spec/api-browser-window.spec.ts spec/webview.spec.ts spec/api-web-contents-view.spec.ts -g "when fullscreen state is changed|fullscreen state|requestFullscreen from webview|can be fullscreened": the tagged tests that run on Linux now run in the serial phase and pass.
  • e test --files spec/chromium.spec.ts -g "navigator.keyboard": "should lock the keyboard" now runs in the serial phase and passes.
  • The macOS-only and Windows-only blocks aren't exercised on Linux, and only their tags change.
  • script/lint.js --js and tsc -p tsconfig.spec.json pass.

🤖 Generated with Claude Code

Checklist

Release Notes

Notes: none

Backports

42-x-y
Merged
PR Number
#54747
Merged At
Oct 8, 2026, 9:17:02 AM
Released In
Not yet
Release Date
Not yet
43-x-y
Merged
PR Number
#54748
Merged At
Oct 8, 2026, 8:58:16 AM
Released In
Not yet
Release Date
Not yet
44-x-y
Merged
PR Number
#54749
Merged At
Oct 8, 2026, 8:59:01 AM
Released In
Not yet
Release Date
Not yet
45-x-y
Merged
PR Number
#54750
Merged At
Oct 8, 2026, 8:59:15 AM
Released In
v45.0.0-beta.1
Release Date
Oct 8, 2026, 7:07:44 PM

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