Skip to content

Commit bff452a

Browse files
committed
improvement(ci): partition macOS desktop smoke coverage
1 parent 965c58f commit bff452a

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

‎.github/CI.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,5 @@ Every HTTP and browser group consumes the same production build in an isolated j
3434
The long-import and lease-expiration checks remain: they prove distinct survival/uncertain-outcome behavior across real process failure. Likewise, the two integration provision paths remain because migrations create constraints/triggers that schema push does not.
3535

3636
Local planner validation is `bun run test:scripts scripts/ci-changes.test.ts scripts/ci-gate.test.ts`. It executes real Turbo queries in small Git fixtures; no application build or database is required. Full builds, services, browser suites, and Electron checks run on hosted CI.
37+
38+
The separate `desktop-e2e` workflow retains its desktop-specific path filters. Its macOS shell smoke suite is partitioned by Playwright across three isolated runners; serial test-file groups stay intact. Packaging smoke and the weekly Electron canary remain separate. Each shard uploads its small JSON coverage/timing report.

‎.github/workflows/desktop-e2e.yml‎

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
name: desktop-e2e
22

3-
# Smoke coverage of the real Electron shell on desktop changes, plus a weekly
3+
# Smoke coverage of the real Electron shell on desktop changes. Three isolated runners
4+
# partition the complete suite by Playwright test-file groups; workers remain serial per runner.
5+
# The weekly
46
# advisory canary against electron@latest so Chromium-cadence breakage surfaces
57
# before an upgrade is attempted.
68

@@ -58,10 +60,14 @@ concurrency:
5860

5961
jobs:
6062
e2e:
61-
name: e2e
63+
name: e2e (${{ matrix.shard }}/3)
6264
if: github.event_name != 'schedule'
6365
runs-on: macos-26
6466
timeout-minutes: 30
67+
strategy:
68+
fail-fast: false
69+
matrix:
70+
shard: [1, 2, 3]
6571
steps:
6672
- name: Checkout code
6773
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
@@ -102,19 +108,29 @@ jobs:
102108

103109
- name: Run Playwright _electron smoke suite
104110
working-directory: apps/desktop
105-
run: bunx playwright test
111+
run: bunx playwright test --shard=${{ matrix.shard }}/3 --reporter=line,json
106112
env:
113+
PLAYWRIGHT_JSON_OUTPUT_FILE: test-results/desktop-smoke.json
107114
BACKGROUND_EXECUTOR_REPORT_PATH: test-results/background-executor-report.json
108115
TERMINAL_CANCEL_REPORT_PATH: test-results/terminal-cancel-report.json
109116

110117
- name: Upload test results
111118
if: failure()
112119
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
113120
with:
114-
name: desktop-e2e-results-pinned
121+
name: desktop-e2e-results-pinned-${{ matrix.shard }}
115122
path: apps/desktop/test-results
116123
retention-days: 7
117124

125+
- name: Upload smoke coverage and timings
126+
if: always()
127+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
128+
with:
129+
name: desktop-smoke-reports-${{ matrix.shard }}
130+
path: apps/desktop/test-results/desktop-smoke.json
131+
if-no-files-found: ignore
132+
retention-days: 7
133+
118134
e2e-canary:
119135
name: e2e-canary
120136
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'

0 commit comments

Comments
 (0)