From 65b647c851be23879dc672c8d43ca92a4a212d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Myll=C3=A4ri?= Date: Tue, 29 Sep 2026 13:09:51 +0200 Subject: [PATCH] ci: shard e2e tests across 4 runners The e2e suite runs serially (~260s). Split it by file across 4 parallel runners and keep a stable 'E2E tests' aggregate check. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38a2ce3..7b473a0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,9 +30,15 @@ jobs: - run: pnpm test e2e: - name: E2E tests + name: E2E tests (${{ matrix.shard }}/4) runs-on: ubuntu-latest needs: qa + # The e2e suite runs serially (fixed auth callback port), so split it across + # runners by file instead. Each shard gets its own machine and port. + strategy: + fail-fast: false + matrix: + shard: [1, 2, 3, 4] steps: - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: @@ -44,4 +50,18 @@ jobs: cache: pnpm - run: pnpm install --frozen-lockfile - - run: pnpm test:e2e + - run: pnpm test:e2e --shard=${SHARD}/4 + env: + SHARD: ${{ matrix.shard }} + + # Stable check name that reports the combined result of all e2e shards. + e2e-result: + name: E2E tests + runs-on: ubuntu-latest + needs: e2e + if: ${{ !cancelled() }} + permissions: {} + steps: + - run: test "${RESULT}" = success + env: + RESULT: ${{ needs.e2e.result }}