@@ -103,9 +103,29 @@ jobs:
103
103
- uses : ./.github/actions/build
104
104
with :
105
105
cache-suffix : ' cdn'
106
+ affected :
107
+ name : ' Determine affected projects'
108
+ runs-on : ubuntu-latest
109
+ needs : build
110
+ outputs :
111
+ projects : ${{ steps.set.outputs.projects }}
112
+ steps :
113
+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
114
+ with :
115
+ fetch-depth : 0
116
+ - uses : ./.github/actions/setup
117
+ - name : Get affected projects
118
+ id : set
119
+ run : |
120
+ AFFECTED=$(npx nx show projects --affected --base=origin/master | tr '\n' ' ')
121
+ echo "projects=$AFFECTED" >> "$GITHUB_OUTPUT"
122
+ - name : Log affected projects
123
+ run : |
124
+ echo "Affected projects: ${{ steps.set.outputs.projects }}"
106
125
cdn-checks :
107
126
name : ' CDN Checks'
108
- needs : build-cdn
127
+ needs : [affected, build-cdn]
128
+ if : contains(needs.affected.outputs.projects, 'atomic') || contains(needs.affected.outputs.projects, 'headless-commerce-react-samples') || contains(needs.affected.outputs.projects, 'atomic-hosted-page')
109
129
env :
110
130
DEPLOYMENT_ENVIRONMENT : CDN
111
131
runs-on : ubuntu-latest
@@ -149,10 +169,12 @@ jobs:
149
169
egress-policy : audit
150
170
151
171
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
172
+ with :
173
+ fetch-depth : 0
152
174
- uses : ./.github/actions/setup
153
175
- name : Install Playwright Browsers
154
176
run : npx playwright install --with-deps
155
- - run : npm test
177
+ - run : npx nx affected --target= test --base=origin/master --head=HEAD
156
178
package-compatibility :
157
179
name : ' Verify compatibility of packages'
158
180
needs : build
@@ -168,7 +190,8 @@ jobs:
168
190
- run : npm run package-compatibility
169
191
typedoc :
170
192
name : ' Build typedoc'
171
- needs : build
193
+ needs : affected
194
+ if : contains(needs.affected.outputs.projects, 'headless') || contains(needs.affected.outputs.projects, 'headless-react')
172
195
runs-on : ubuntu-latest
173
196
steps :
174
197
- name : Harden Runner
@@ -184,27 +207,10 @@ jobs:
184
207
- name : ' Build headless-react typedoc'
185
208
run : npm run build:typedoc
186
209
working-directory : packages/headless-react
187
- should-e2e-atomic :
188
- name : ' Should e2e test Atomic?'
189
- needs : build
190
- runs-on : ubuntu-latest
191
- outputs :
192
- changesOnlyInQuantic : ${{ steps.shouldRunAtomice2e.outputs.changesOnlyInQuantic }}
193
- steps :
194
- - name : Harden Runner
195
- uses : step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
196
- with :
197
- egress-policy : audit
198
- - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
199
- with :
200
- fetch-depth : 0
201
- - uses : ./.github/actions/setup
202
- - run : node ./scripts/ci/everyFilesChangedMatchPatterns.mjs changesOnlyInQuantic 'packages/quantic/**/*'
203
- id : shouldRunAtomice2e
204
210
e2e-atomic-csp-test :
205
211
name : ' Run e2e tests on Atomic CSP'
206
- needs : should-e2e-atomic
207
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
212
+ needs : affected
213
+ if : contains( needs.affected .outputs.projects, 'atomic')
208
214
runs-on : ubuntu-latest
209
215
steps :
210
216
- name : Harden Runner
@@ -217,8 +223,8 @@ jobs:
217
223
- uses : ./.github/actions/e2e-atomic-csp
218
224
prepare-playwright-atomic :
219
225
name : ' Determine Playwright E2E tests to run'
220
- needs : should-e2e-atomic
221
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
226
+ needs : affected
227
+ if : contains( needs.affected .outputs.projects, 'atomic')
222
228
runs-on : ubuntu-latest
223
229
env :
224
230
maximumShards : 12
@@ -315,8 +321,8 @@ jobs:
315
321
copy : true
316
322
playwright-atomic-theming :
317
323
name : ' Run theming smoke tests for Atomic'
318
- needs : should-e2e-atomic
319
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
324
+ needs : affected
325
+ if : contains( needs.affected .outputs.projects, 'atomic')
320
326
runs-on : ubuntu-latest
321
327
steps :
322
328
- name : Harden Runner
@@ -330,8 +336,8 @@ jobs:
330
336
- uses : ./.github/actions/playwright-atomic-theming
331
337
e2e-atomic-test :
332
338
name : ' Run e2e tests on Atomic'
333
- needs : should-e2e-atomic
334
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
339
+ needs : affected
340
+ if : contains( needs.affected .outputs.projects, 'atomic')
335
341
runs-on : ubuntu-latest
336
342
strategy :
337
343
fail-fast : false
@@ -384,8 +390,8 @@ jobs:
384
390
SPLIT_INDEX : ${{ strategy.job-index }}
385
391
e2e-atomic-screenshots :
386
392
name : ' Run e2e screenshots tests on Atomic'
387
- needs : should-e2e-atomic
388
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
393
+ needs : affected
394
+ if : contains( needs.affected .outputs.projects, 'atomic')
389
395
runs-on : ubuntu-latest
390
396
steps :
391
397
- name : Harden Runner
@@ -398,8 +404,8 @@ jobs:
398
404
- uses : ./.github/actions/e2e-atomic-screenshots
399
405
e2e-atomic-react-test :
400
406
name : ' Run e2e tests on Atomic React'
401
- needs : should-e2e-atomic
402
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
407
+ needs : affected
408
+ if : contains( needs.affected .outputs.projects, 'atomic-react-samples')
403
409
runs-on : ubuntu-latest
404
410
steps :
405
411
- name : Harden Runner
@@ -412,8 +418,8 @@ jobs:
412
418
- uses : ./.github/actions/e2e-atomic-react
413
419
e2e-atomic-react-nextjs-test :
414
420
name : ' Run e2e tests on Atomic React NextJS'
415
- needs : should-e2e-atomic
416
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
421
+ needs : affected
422
+ if : contains( needs.affected .outputs.projects, 'atomic-next-samples')
417
423
runs-on : ubuntu-latest
418
424
steps :
419
425
- name : Harden Runner
@@ -426,8 +432,8 @@ jobs:
426
432
- uses : ./.github/actions/e2e-atomic-next
427
433
e2e-iife-test :
428
434
name : ' Run e2e tests for IIFE'
429
- needs : should-e2e-atomic
430
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
435
+ needs : affected
436
+ if : contains( needs.affected .outputs.projects, 'iife-samples')
431
437
runs-on : ubuntu-latest
432
438
steps :
433
439
- name : Harden Runner
@@ -441,8 +447,8 @@ jobs:
441
447
# - uses: ./.github/actions/e2e-iife
442
448
e2e-atomic-angular-test :
443
449
name : ' Run e2e tests on Atomic Angular'
444
- needs : should-e2e-atomic
445
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
450
+ needs : affected
451
+ if : contains( needs.affected .outputs.projects, 'atomic-angular-samples')
446
452
runs-on : ubuntu-latest
447
453
steps :
448
454
- name : Harden Runner
@@ -455,8 +461,8 @@ jobs:
455
461
- uses : ./.github/actions/e2e-atomic-angular
456
462
e2e-atomic-vuejs-test :
457
463
name : ' Run e2e tests on Vue.js sample'
458
- needs : should-e2e-atomic
459
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
464
+ needs : affected
465
+ if : contains( needs.affected .outputs.projects, 'atomic-vuejs-samples')
460
466
runs-on : ubuntu-latest
461
467
steps :
462
468
- name : Harden Runner
@@ -469,8 +475,8 @@ jobs:
469
475
- uses : ./.github/actions/e2e-vuejs
470
476
e2e-atomic-stencil-test :
471
477
name : ' Run e2e tests on Stencil.js sample'
472
- needs : should-e2e-atomic
473
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
478
+ needs : affected
479
+ if : contains( needs.affected .outputs.projects, 'atomic-stencil-samples')
474
480
runs-on : ubuntu-latest
475
481
steps :
476
482
- name : Harden Runner
@@ -483,8 +489,8 @@ jobs:
483
489
- uses : ./.github/actions/e2e-stencil
484
490
playwright-atomic-hosted-page-test :
485
491
name : ' Run e2e tests for Atomic Hosted Page'
486
- needs : should-e2e-atomic
487
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
492
+ needs : affected
493
+ if : contains( needs.affected .outputs.projects, 'atomic-hosted-page')
488
494
runs-on : ubuntu-latest
489
495
steps :
490
496
- name : Harden Runner
@@ -498,8 +504,8 @@ jobs:
498
504
- uses : ./.github/actions/playwright-atomic-hosted-pages
499
505
playwright-headless-ssr-commerce :
500
506
name : ' Run e2e tests for Headless Commerce SSR'
501
- needs : should-e2e-atomic
502
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
507
+ needs : affected
508
+ if : contains( needs.affected .outputs.projects, 'headless-ssr-commerce-samples')
503
509
runs-on : ubuntu-latest
504
510
steps :
505
511
- name : Harden Runner
@@ -513,8 +519,8 @@ jobs:
513
519
- uses : ./.github/actions/playwright-headless-ssr-commerce-nextjs
514
520
e2e-atomic-insight-panel-test :
515
521
name : ' Run e2e tests on Atomic insight panel'
516
- needs : should-e2e-atomic
517
- if : ${{ needs.should-e2e-atomic .outputs.changesOnlyInQuantic == 'false' }}
522
+ needs : affected
523
+ if : contains( needs.affected .outputs.projects, 'atomic')
518
524
runs-on : ubuntu-latest
519
525
steps :
520
526
- name : Harden Runner
@@ -527,7 +533,8 @@ jobs:
527
533
- uses : ./.github/actions/e2e-atomic-insight-panel
528
534
e2e-headless-ssr-test-app :
529
535
name : ' Run e2e tests on Headless SSR App router sample'
530
- needs : build
536
+ needs : affected
537
+ if : contains(needs.affected.outputs.projects, 'headless-ssr-samples-app-router')
531
538
runs-on : ubuntu-latest
532
539
steps :
533
540
- name : Harden Runner
@@ -540,7 +547,8 @@ jobs:
540
547
- uses : ./.github/actions/e2e-headless-ssr-app
541
548
e2e-headless-ssr-test-pages :
542
549
name : ' Run e2e tests on Headless SSR Pages router sample'
543
- needs : build
550
+ needs : affected
551
+ if : contains(needs.affected.outputs.projects, 'headless-ssr-samples-pages-router')
544
552
runs-on : ubuntu-latest
545
553
steps :
546
554
- name : Harden Runner
@@ -551,28 +559,10 @@ jobs:
551
559
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
552
560
- uses : ./.github/actions/setup
553
561
- uses : ./.github/actions/e2e-headless-ssr-pages
554
- should-e2e-quantic :
555
- name : ' Should test Quantic?'
556
- needs : build
557
- runs-on : ubuntu-latest
558
- outputs :
559
- shouldRunQuantic : ${{ steps.shouldRunQuantic.outputs.shouldRunQuantic }}
560
- steps :
561
- - name : Harden Runner
562
- uses : step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
563
- with :
564
- egress-policy : audit
565
-
566
- - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
567
- with :
568
- fetch-depth : 0
569
- - uses : ./.github/actions/setup
570
- - run : node ./scripts/ci/someFilesChangedInPatterns.mjs shouldRunQuantic 'packages/quantic/**/*' 'packages/headless/**/*' 'packages/bueno/**/*' package.json package-lock.json
571
- id : shouldRunQuantic
572
562
e2e-quantic :
573
563
name : ' Run Quantic E2E tests'
574
- needs : should-e2e-quantic
575
- if : ${{ needs.should-e2e-quantic .outputs.shouldRunQuantic == 'true' }}
564
+ needs : affected
565
+ if : contains( needs.affected .outputs.projects, 'quantic')
576
566
uses : ./.github/workflows/e2e-quantic.yml
577
567
secrets :
578
568
SFDX_AUTH_CLIENT_ID : ${{ secrets.SFDX_AUTH_CLIENT_ID }}
0 commit comments