@@ -229,6 +229,7 @@ jobs:
229229 retention-days : 7
230230
231231 go-smoke-test-embedded-postgres :
232+ if : github.event_name == 'push' && github.ref == 'refs/heads/main'
232233 runs-on : depot-ubuntu-24.04-4
233234 timeout-minutes : 15
234235 needs : [goreleaser-snapshot]
@@ -335,6 +336,7 @@ jobs:
335336 node scripts/check-changeset-required.mjs --base "origin/${{ github.base_ref }}"
336337
337338 quickstart-smoke :
339+ if : github.event_name == 'push' && github.ref == 'refs/heads/main'
338340 runs-on : depot-ubuntu-24.04-4
339341 timeout-minutes : 20
340342 needs : [goreleaser-snapshot]
@@ -423,6 +425,7 @@ jobs:
423425 fi
424426
425427 node-e2e :
428+ if : github.event_name == 'push' && github.ref == 'refs/heads/main'
426429 runs-on : depot-ubuntu-24.04-4
427430 timeout-minutes : 15
428431 steps :
@@ -548,9 +551,14 @@ jobs:
548551 retention-days : 7
549552
550553 consumer-journey-e2e :
554+ name : consumer-journey-e2e (${{ matrix.framework }})
551555 runs-on : depot-ubuntu-24.04-4
552556 timeout-minutes : 35
553557 needs : [goreleaser-snapshot, npm-pack-smoke]
558+ strategy :
559+ fail-fast : false
560+ matrix :
561+ framework : [next, nuxt, react, vue, angular]
554562 steps :
555563 - uses : actions/checkout@v6
556564
@@ -667,38 +675,52 @@ jobs:
667675 docker image inspect -f '{{.Os}}/{{.Architecture}}' "$(cat goreleaser-dist/nextgen-image.tag)" | grep -q '^linux/amd64$'
668676 echo "ZITADEL_LOCAL_IMAGE=$(cat goreleaser-dist/nextgen-image.tag)" >> "$GITHUB_ENV"
669677
670- - name : Prepare fresh Next.js app
678+ - name : Prepare fresh ${{ matrix.framework }} app
671679 id : prepare-app
672680 env :
681+ JOURNEY_APP_URL : http://localhost:3000
682+ JOURNEY_FRAMEWORK : ${{ matrix.framework }}
673683 JOURNEY_REGISTRY_URL : http://127.0.0.1:4873
674- JOURNEY_WORK_DIR : ${{ runner.temp }}/zitadel-cli-journey
675- run : node apps/cli-journey-e2e/scripts/prepare-next- app.mjs
684+ JOURNEY_WORK_DIR : ${{ runner.temp }}/zitadel-cli-journey-${{ matrix.framework }}
685+ run : node apps/cli-journey-e2e/scripts/prepare-app.mjs
676686
677- - name : Start generated Next.js app
687+ - name : Start generated ${{ matrix.framework }} app
678688 run : |
679689 cd "$JOURNEY_APP_DIR"
680- npm run dev -- --hostname localhost --port 3000 > "$RUNNER_TEMP/next-app.log" 2>&1 &
681- echo "NEXT_APP_PID=$!" >> "$GITHUB_ENV"
690+ APP_LOG="$RUNNER_TEMP/${{ matrix.framework }}-app.log"
691+ case "${{ matrix.framework }}" in
692+ next)
693+ npm run dev -- --hostname localhost --port 3000 > "$APP_LOG" 2>&1 &
694+ ;;
695+ *)
696+ npm run dev -- --host localhost --port 3000 > "$APP_LOG" 2>&1 &
697+ ;;
698+ esac
699+ echo "JOURNEY_APP_PID=$!" >> "$GITHUB_ENV"
682700 for _ in $(seq 1 90); do
683701 if curl -fsS http://localhost:3000/login >/dev/null; then
684702 exit 0
685703 fi
686704 sleep 1
687705 done
688- echo "::error::timed out waiting for generated Next.js app"
689- cat "$RUNNER_TEMP/next-app.log "
706+ echo "::error::timed out waiting for generated ${{ matrix.framework }} app"
707+ cat "$APP_LOG "
690708 exit 1
691709
692710 - name : Run consumer journey Playwright tests
711+ env :
712+ JOURNEY_FRAMEWORK : ${{ matrix.framework }}
713+ JOURNEY_PLAYWRIGHT_OUTPUT_DIR : apps/cli-journey-e2e/test-output/playwright/${{ matrix.framework }}/output
714+ JOURNEY_PLAYWRIGHT_REPORT_DIR : apps/cli-journey-e2e/test-output/playwright/${{ matrix.framework }}/report
693715 run : >-
694716 corepack pnpm --filter @zitadel/cli-journey-e2e
695717 exec playwright test --config playwright.config.mts
696718
697719 - name : Collect diagnostics
698720 if : failure()
699721 run : |
700- DIAG_DIR="$RUNNER_TEMP/consumer-journey-diagnostics"
701- APP_DIR="$RUNNER_TEMP/zitadel-cli-journey/myapp"
722+ DIAG_DIR="$RUNNER_TEMP/consumer-journey-diagnostics-${{ matrix.framework }} "
723+ APP_DIR="$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /myapp"
702724 mkdir -p "$DIAG_DIR/generated-app"
703725 if [ -d "$APP_DIR" ]; then
704726 (
@@ -711,15 +733,15 @@ jobs:
711733 > "$DIAG_DIR/logs.json" 2> "$DIAG_DIR/logs.stderr.log"
712734 ) || true
713735 fi
714- cp "$RUNNER_TEMP/next -app.log" "$DIAG_DIR/" 2>/dev/null || true
736+ cp "$RUNNER_TEMP/${{ matrix.framework }} -app.log" "$DIAG_DIR/" 2>/dev/null || true
715737 cp "$RUNNER_TEMP/verdaccio.log" "$DIAG_DIR/" 2>/dev/null || true
716- cp "$RUNNER_TEMP/zitadel-cli-journey/doctor.json" "$DIAG_DIR/" 2>/dev/null || true
717- cp "$RUNNER_TEMP/zitadel-cli-journey/doctor.stderr.log" "$DIAG_DIR/" 2>/dev/null || true
718- cp "$RUNNER_TEMP/zitadel-cli-journey/start.json" "$DIAG_DIR/" 2>/dev/null || true
719- cp "$RUNNER_TEMP/zitadel-cli-journey/start.stderr.log" "$DIAG_DIR/" 2>/dev/null || true
720- cp "$RUNNER_TEMP/zitadel-cli-journey/setup.json" "$DIAG_DIR/" 2>/dev/null || true
721- cp "$RUNNER_TEMP/zitadel-cli-journey/setup.stderr.log" "$DIAG_DIR/" 2>/dev/null || true
722- cp "$RUNNER_TEMP/zitadel-cli-journey/metadata.json" "$DIAG_DIR/" 2>/dev/null || true
738+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /doctor.json" "$DIAG_DIR/" 2>/dev/null || true
739+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /doctor.stderr.log" "$DIAG_DIR/" 2>/dev/null || true
740+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /start.json" "$DIAG_DIR/" 2>/dev/null || true
741+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /start.stderr.log" "$DIAG_DIR/" 2>/dev/null || true
742+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /setup.json" "$DIAG_DIR/" 2>/dev/null || true
743+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /setup.stderr.log" "$DIAG_DIR/" 2>/dev/null || true
744+ cp "$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /metadata.json" "$DIAG_DIR/" 2>/dev/null || true
723745 cp "$APP_DIR/.zitadel/local/runtime.json" "$DIAG_DIR/runtime.json" 2>/dev/null || true
724746 cp "$APP_DIR/package.json" "$DIAG_DIR/generated-app/" 2>/dev/null || true
725747 cp "$APP_DIR/package-lock.json" "$DIAG_DIR/generated-app/" 2>/dev/null || true
@@ -728,19 +750,19 @@ jobs:
728750 if : failure()
729751 uses : actions/upload-artifact@v7
730752 with :
731- name : consumer-journey-diagnostics
753+ name : consumer-journey-diagnostics-${{ matrix.framework }}
732754 path : |
733- apps/cli-journey-e2e/test-output/playwright/report/**
734- apps/cli-journey-e2e/test-output/playwright/output/**
735- ${{ runner.temp }}/consumer-journey-diagnostics/**
755+ apps/cli-journey-e2e/test-output/playwright/${{ matrix.framework }}/ report/**
756+ apps/cli-journey-e2e/test-output/playwright/${{ matrix.framework }}/ output/**
757+ ${{ runner.temp }}/consumer-journey-diagnostics-${{ matrix.framework }} /**
736758 if-no-files-found : ignore
737759 retention-days : 7
738760
739761 - name : Tear down consumer journey services
740762 if : always()
741763 run : |
742- if [ -n "${NEXT_APP_PID :-}" ]; then kill "$NEXT_APP_PID " 2>/dev/null || true; fi
743- APP_DIR="$RUNNER_TEMP/zitadel-cli-journey/myapp"
764+ if [ -n "${JOURNEY_APP_PID :-}" ]; then kill "$JOURNEY_APP_PID " 2>/dev/null || true; fi
765+ APP_DIR="$RUNNER_TEMP/zitadel-cli-journey-${{ matrix.framework }} /myapp"
744766 if [ -d "$APP_DIR" ]; then
745767 (
746768 cd "$APP_DIR"
@@ -773,11 +795,17 @@ jobs:
773795 steps :
774796 - name : Check CI gate results
775797 env :
798+ IS_PULL_REQUEST : ${{ github.event_name == 'pull_request' }}
776799 NEEDS_JSON : ${{ toJson(needs) }}
777800 run : |
778801 node <<'NODE'
779802 const needs = JSON.parse(process.env.NEEDS_JSON);
780803 const allowedSkipped = new Set(["changeset-check"]);
804+ if (process.env.IS_PULL_REQUEST === "true") {
805+ allowedSkipped.add("go-smoke-test-embedded-postgres");
806+ allowedSkipped.add("quickstart-smoke");
807+ allowedSkipped.add("node-e2e");
808+ }
781809 const failed = Object.entries(needs).filter(([name, job]) => {
782810 if (job.result === "success") return false;
783811 if (job.result === "skipped" && allowedSkipped.has(name)) return false;
0 commit comments