4040env :
4141 # Disable incremental build, speeds up CI
4242 CARGO_INCREMENTAL : 0
43+ CI_NODE_VERSION : 22.18.0
4344
4445permissions :
4546 contents : read
@@ -222,9 +223,29 @@ jobs:
222223 # ########### BUILD Qwik ############
223224 build-qwik :
224225 name : Build Qwik
225- needs : changes
226+ needs :
227+ - changes
228+ - combined-optimizer
229+ if : always()
226230 runs-on : ubuntu-latest
227231 steps :
232+ - name : Verify prerequisites
233+ if : |
234+ !(
235+ needs.changes.result == 'success' &&
236+ (
237+ (
238+ needs.changes.outputs.build-rust == 'true' &&
239+ needs.combined-optimizer.result == 'success'
240+ ) ||
241+ (
242+ needs.changes.outputs.build-rust != 'true' &&
243+ needs.combined-optimizer.result == 'skipped'
244+ )
245+ )
246+ )
247+ run : exit 1
248+
228249 - name : Checkout
229250 uses : actions/checkout@v5
230251
@@ -234,10 +255,29 @@ jobs:
234255 if : needs.changes.outputs.build-qwik == 'true'
235256 uses : actions/setup-node@v5
236257 with :
237- node-version : 24.x
258+ node-version : ${{ env.CI_NODE_VERSION }}
238259 cache : ' pnpm'
239260 registry-url : https://registry.npmjs.org/
240261
262+ - name : Restore optimizer cache
263+ if : |
264+ needs.changes.outputs.build-qwik == 'true' &&
265+ needs.changes.outputs.build-rust != 'true'
266+ uses : actions/cache/restore@v4
267+ with :
268+ fail-on-cache-miss : true
269+ path : packages/optimizer/
270+ key : ${{ needs.changes.outputs.hash-rust }}
271+
272+ - name : Restore optimizer artifact
273+ if : |
274+ needs.changes.outputs.build-qwik == 'true' &&
275+ needs.changes.outputs.build-rust == 'true'
276+ uses : actions/download-artifact@v4
277+ with :
278+ name : artifact-optimizer
279+ path : packages/optimizer/
280+
241281 - name : Install NPM Dependencies
242282 if : needs.changes.outputs.build-qwik == 'true'
243283 run : |
@@ -311,7 +351,7 @@ jobs:
311351 - name : Setup Node
312352 uses : actions/setup-node@v5
313353 with :
314- node-version : 24.x
354+ node-version : ${{ env.CI_NODE_VERSION }}
315355 cache : ' pnpm'
316356 registry-url : https://registry.npmjs.org/
317357
@@ -437,7 +477,7 @@ jobs:
437477 if : needs.changes.outputs.build-others == 'true'
438478 uses : actions/setup-node@v5
439479 with :
440- node-version : 24.x
480+ node-version : ${{ env.CI_NODE_VERSION }}
441481 cache : ' pnpm'
442482 registry-url : https://registry.npmjs.org/
443483
@@ -552,7 +592,7 @@ jobs:
552592 - name : Setup Node
553593 uses : actions/setup-node@v5
554594 with :
555- node-version : 24.x
595+ node-version : ${{ env.CI_NODE_VERSION }}
556596 cache : ' pnpm'
557597 registry-url : https://registry.npmjs.org/
558598
@@ -599,7 +639,7 @@ jobs:
599639 - name : Setup Node
600640 uses : actions/setup-node@v5
601641 with :
602- node-version : 24.x
642+ node-version : ${{ env.CI_NODE_VERSION }}
603643 cache : ' pnpm'
604644 registry-url : https://registry.npmjs.org/
605645
@@ -656,7 +696,7 @@ jobs:
656696 - name : Setup Node
657697 uses : actions/setup-node@v5
658698 with :
659- node-version : 24.x
699+ node-version : ${{ env.CI_NODE_VERSION }}
660700 cache : ' pnpm'
661701 registry-url : https://registry.npmjs.org/
662702
@@ -719,7 +759,7 @@ jobs:
719759 - name : Setup Node
720760 uses : actions/setup-node@v5
721761 with :
722- node-version : 24.x
762+ node-version : ${{ env.CI_NODE_VERSION }}
723763 cache : ' pnpm'
724764 registry-url : https://registry.npmjs.org/
725765
@@ -790,7 +830,7 @@ jobs:
790830 - name : Setup Node
791831 uses : actions/setup-node@v5
792832 with :
793- node-version : 24.x
833+ node-version : ${{ env.CI_NODE_VERSION }}
794834 cache : ' pnpm'
795835 registry-url : https://registry.npmjs.org/
796836
@@ -881,7 +921,7 @@ jobs:
881921 - name : Setup Node
882922 uses : actions/setup-node@v5
883923 with :
884- node-version : 24.x
924+ node-version : ${{ env.CI_NODE_VERSION }}
885925 cache : ' pnpm'
886926 registry-url : https://registry.npmjs.org/
887927
@@ -912,7 +952,7 @@ jobs:
912952 if : failure()
913953
914954 test-cli-e2e :
915- name : E2E CLI Tests
955+ name : E2E CLI Tests (${{ matrix.settings.runtime }}, ${{ matrix.settings.host }}, ${{ matrix.settings.browser }})
916956 if : always() && needs.changes.outputs.build-cli-e2e == 'true'
917957
918958 needs :
@@ -925,10 +965,34 @@ jobs:
925965 settings :
926966 - host : ubuntu-latest
927967 browser : chromium
968+ runtime : node
969+ integration-script : test.e2e.integrations.chromium
970+ run-cli : true
971+ run-qwik-react : true
972+ - host : ubuntu-latest
973+ browser : chromium
974+ runtime : bun
975+ integration-script : test.e2e.integrations.bun.chromium
976+ run-cli : false
977+ run-qwik-react : false
978+ - host : ubuntu-latest
979+ browser : chromium
980+ runtime : deno
981+ integration-script : test.e2e.integrations.deno.chromium
982+ run-cli : false
983+ run-qwik-react : false
928984 - host : macos-latest
929985 browser : webkit
986+ runtime : node
987+ integration-script : test.e2e.integrations.webkit
988+ run-cli : true
989+ run-qwik-react : true
930990 - host : windows-latest
931991 browser : chromium
992+ runtime : node
993+ integration-script : test.e2e.integrations.chromium
994+ run-cli : true
995+ run-qwik-react : true
932996
933997 runs-on : ${{ matrix.settings.host }}
934998
@@ -952,7 +1016,7 @@ jobs:
9521016 - name : Setup Node
9531017 uses : actions/setup-node@v5
9541018 with :
955- node-version : 24.x
1019+ node-version : ${{ env.CI_NODE_VERSION }}
9561020 cache : ' pnpm'
9571021 registry-url : https://registry.npmjs.org/
9581022
@@ -964,15 +1028,29 @@ jobs:
9641028
9651029 - run : pnpm install --frozen-lockfile
9661030
1031+ - name : Setup Bun
1032+ if : matrix.settings.runtime == 'bun'
1033+ uses : oven-sh/setup-bun@v2
1034+ with :
1035+ bun-version : latest
1036+
1037+ - name : Setup Deno
1038+ if : matrix.settings.runtime == 'deno'
1039+ uses : denoland/setup-deno@v2
1040+ with :
1041+ deno-version : v2.x
1042+
9671043 - name : Install Playwright
9681044 run : npx playwright install ${{ matrix.settings.browser }} --with-deps
9691045
9701046 - name : Playwright E2E Integration Tests
971- run : pnpm run test.e2e.integrations. ${{ matrix.settings.browser }}
1047+ run : pnpm run ${{ matrix.settings.integration-script }}
9721048
9731049 - name : Playwright E2E Qwik React Tests
1050+ if : matrix.settings.run-qwik-react
9741051 run : pnpm run test.e2e.qwik-react.${{ matrix.settings.browser }}
9751052 - name : CLI E2E Tests
1053+ if : matrix.settings.run-cli
9761054 run : pnpm run test.e2e.cli.${{ matrix.settings.browser }}
9771055
9781056 save-e2e-tests-cache :
@@ -1039,7 +1117,7 @@ jobs:
10391117 - name : Setup Node
10401118 uses : actions/setup-node@v5
10411119 with :
1042- node-version : 24.x
1120+ node-version : ${{ env.CI_NODE_VERSION }}
10431121 cache : ' pnpm'
10441122 registry-url : https://registry.npmjs.org/
10451123
@@ -1117,7 +1195,7 @@ jobs:
11171195 - name : Setup Node
11181196 uses : actions/setup-node@v5
11191197 with :
1120- node-version : 24.x
1198+ node-version : ${{ env.CI_NODE_VERSION }}
11211199 cache : ' pnpm'
11221200 registry-url : https://registry.npmjs.org/
11231201
0 commit comments