ci: display tests gate nothing; a display-only suite skips with a notice

Merged
TE
6d ago
+55-33

Leo, 2026-10-31: "i dont like doing display tests anymore"

Display tests (Swift suites whose traits skip without a display, the scripts/ci/display-suites.txt list) no longer gate anything here. Tests are not deleted; they still run where a display is asked for.

Routing change

  • scripts/ci/package-test-lane.sh suite: a suite that ran none of its tests because every skip names a display now reads skipped (needs a display) with a ::notice and does not fail the step. Before (cmux#26870) it was a red no result (0 ran), so a lane that named a display suite had to wait for a gui-session-v1 display worker (about 30 such steps queued 45+ minutes). It stays a red when the step asked for a display: CMUX_TEST_REQUIRE_GUI=1, or CMUX_CI_DISPLAY_ROUTED=1 (cmux-ci's opt-in --display, companion cmuxterm-hq PR). Any other zero-ran suite (no reason, missing cmux-tui) is still no result. The summary says N of M suites passed; K skipped (needs a display, not gating).
  • cmux-next.yml: swift-test, daemon-test and generated-files set CMUX_TEST_REQUIRE_GUI=1 on a mini only off pull_request, so on a PR display suites skip and a lost console session never fails a PR job. Pushes keep it as advisory coverage.

Risk: a regression only a display suite catches (drag, motion, window placement, pasteboard) is no longer caught at PR time. Those suites still run on push and on demand (cmux-ci run --display). None of them is the only check for a crash on launch: the nightly fresh-home launch smoke covers that.

Tests: tests/test_ci_package_lane_suite_skips.py (the display-only case passes with a notice; routed and CMUX_TEST_REQUIRE_GUI=1 cases still fail; no-reason and missing cmux-tui stay no result). Run on an exported tree: 19 of 20 pass; the one failure scans Packages/ sources the export left out.

Agent session: agent session

šŸ¤– Generated with Claude Code


Summary by cubic

Display-only test suites no longer block CI lanes. Previously, a Swift suite whose tests all skipped for want of a display failed the step as no result (0 ran), so lanes naming such suites had to wait for a display worker. Now such a suite reads skipped (needs a display) with a ::notice and does not fail the step; the lane summary reports N of M suites passed; K skipped (needs a display, not gating).

  • A step still fails if it asked for a display (CMUX_TEST_REQUIRE_GUI=1 or the cmux-ci --display opt-in, which sets CMUX_CI_DISPLAY_ROUTED=1); any other zero-ran suite stays no result.
  • cmux-next.yml no longer sets CMUX_TEST_REQUIRE_GUI on pull_request runs of swift-test, daemon-test, and generated-files, so PR display suites skip and a lost console session never fails a PR job. Pushes and nightlies keep it as advisory coverage.
  • Tests updated to cover the new skip and the still-failing no-result cases.