88
99jobs :
1010 quality :
11- name : Format, Lint, Typecheck, Test, Browser Test, Build
11+ name : Format, Lint, Typecheck, Test, Build
1212 runs-on : ubuntu-24.04
1313 timeout-minutes : 60
1414 steps :
2525 with :
2626 node-version-file : package.json
2727
28- - name : Cache Bun and Turbo
29- uses : actions/cache@v5
30- with :
31- path : |
32- ~/.bun/install/cache
33- .turbo
34- key : ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-${{ hashFiles('turbo.json') }}
35- restore-keys : |
36- ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-
37-
38- - name : Cache Playwright browsers
39- uses : actions/cache@v5
40- with :
41- path : ~/.cache/ms-playwright
42- key : ${{ runner.os }}-playwright-${{ hashFiles('bun.lock') }}
43- restore-keys : |
44- ${{ runner.os }}-playwright-
45-
4628 - name : Install dependencies
4729 run : bun install --frozen-lockfile
4830
@@ -65,133 +47,10 @@ jobs:
6547 - name : Test
6648 run : bun run test
6749
68- # Run the workspace-local playwright binary directly: bunx stalled after
69- # the chromium download on hosted runners. The step timeout stops any
70- # remaining apt/download stalls from eating the whole job budget.
71- - name : Install browser test runtime
72- timeout-minutes : 15
73- env :
74- DEBIAN_FRONTEND : noninteractive
75- run : |
76- cd apps/web
77- ./node_modules/.bin/playwright install --with-deps chromium
78-
79- - name : Browser test (stable)
80- timeout-minutes : 20
81- run : bun run --cwd apps/web test:browser:stable
82-
83- # Pixel/font/layout comparisons are tracked explicitly in
84- # apps/web/BROWSER_TEST_QUARANTINE.md while their Linux rendering is fixed.
85- # All untagged browser tests run in the blocking stable step above.
86- - name : Browser test (Linux geometry quarantine)
87- continue-on-error : true
88- timeout-minutes : 10
89- run : bun run --cwd apps/web test:browser:geometry
90-
9150 - name : Build desktop pipeline
9251 run : bun run build:desktop
9352
9453 - name : Verify preload bundle output
9554 run : |
9655 test -f apps/desktop/dist-electron/preload.js
9756 grep -nE "desktopBridge|getWsUrl|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.js
98-
99- windows_process :
100- name : Windows Process Regression
101- if : github.event_name != 'pull_request'
102- continue-on-error : true
103- runs-on : windows-2022
104- timeout-minutes : 15
105- steps :
106- - name : Checkout
107- uses : actions/checkout@v6
108-
109- - name : Setup Bun
110- uses : oven-sh/setup-bun@v2
111- with :
112- bun-version-file : package.json
113-
114- - name : Setup Node
115- uses : actions/setup-node@v6
116- with :
117- node-version-file : package.json
118-
119- - name : Install dependencies
120- timeout-minutes : 4
121- run : bun install --frozen-lockfile
122-
123- - name : Verify Windows terminal PTY native dependency under Bun
124- run : bun scripts/node-pty-smoke.mjs
125-
126- - name : Test Windows process planning
127- run : bun run --cwd packages/shared test src/windowsProcess.test.ts
128-
129- - name : Test Effect Windows process spawn
130- run : bun run --cwd apps/server test src/windowsProcessEffect.test.ts
131-
132- - name : Test Windows desktop backend shutdown
133- run : bun run --cwd apps/desktop test src/backendShutdown.windows.integration.test.ts
134-
135- # The 0.6.0 wedge hit Windows hardest, and the repair path is built out of
136- # exactly what Windows treats differently: unlinking a marker, reclaiming
137- # stranded partials, and renaming a database file that may still be held
138- # open. Linux-only coverage cannot speak for any of that.
139- - name : Test migration recovery marker
140- run : bun run --cwd packages/shared test src/migrationRecovery.test.ts
141-
142- - name : Test desktop migration recovery
143- run : bun run --cwd apps/desktop test src/desktopMigrationRecovery.test.ts
144-
145- - name : Test migration backup and restore
146- run : bun run --cwd apps/server test src/persistence/MigrationBackup.test.ts
147-
148- - name : Test migration replay
149- run : bun run --cwd apps/server test src/persistence/Migrations/MigrationReplay.test.ts
150-
151- # Released (id, name) migration pairs are recorded in every user's
152- # effect_sql_migrations table, so renumbering or renaming one corrupts existing
153- # installs. This job needs the release tags, hence the unshallow checkout; the
154- # guard itself is dependency-free and skips with a warning if tags are missing.
155- migration_lineage :
156- name : Migration Lineage
157- runs-on : ubuntu-24.04
158- timeout-minutes : 10
159- steps :
160- - name : Checkout
161- uses : actions/checkout@v6
162- with :
163- fetch-depth : 0
164-
165- - name : Setup Node
166- uses : actions/setup-node@v6
167- with :
168- node-version-file : package.json
169-
170- - name : Verify released migration lineage
171- run : node scripts/check-migration-lineage.ts
172-
173- release_smoke :
174- name : Release Smoke
175- runs-on : ubuntu-24.04
176- steps :
177- - name : Checkout
178- uses : actions/checkout@v6
179-
180- - name : Setup Bun
181- uses : oven-sh/setup-bun@v2
182- with :
183- bun-version-file : package.json
184-
185- - name : Setup Node
186- uses : actions/setup-node@v6
187- with :
188- node-version-file : package.json
189-
190- - name : Install dependencies
191- run : bun install --frozen-lockfile
192-
193- - name : Verify Synara identity
194- run : bun run brand:check
195-
196- - name : Exercise release-only workflow steps
197- run : node scripts/release-smoke.ts
0 commit comments