From b963b8219e028b2d37e99fd33bd981fdefa89495 Mon Sep 17 00:00:00 2001 From: Austin Turner Date: Fri, 10 Apr 2026 08:40:58 -0700 Subject: [PATCH 1/3] chore: enhance CI workflow with E2E sharding and report merging --- .github/workflows/ci.yml | 54 +++++++++++++++++++++---- apps/jetstream-e2e/playwright.config.ts | 4 +- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 382bf6f74..373189a9a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,7 +87,13 @@ jobs: path: dist e2e: + needs: [build-and-test] runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + shardIndex: [1, 2, 3, 4] + shardTotal: [4] env: E2E_LOGIN_PASSWORD: ${{ secrets.E2E_LOGIN_PASSWORD }} E2E_LOGIN_URL: "https://jetstream-e2e-dev-ed.develop.my.salesforce.com" @@ -126,8 +132,11 @@ jobs: - name: install dependencies run: yarn install --frozen-lockfile - - name: Build - run: yarn build:ci + - name: Download build artifacts + uses: actions/download-artifact@v6 + with: + name: dist-artifacts + path: dist - name: Install Playwright dependencies run: npx playwright install --with-deps @@ -149,13 +158,42 @@ jobs: PGDATABASE: postgres - name: Run E2E tests - run: yarn playwright:test:with-server + run: >- + yarn start-server-and-test --expect 200 + 'yarn start:e2e' http://localhost:3333 + 'yarn playwright test src --config apps/jetstream-e2e/playwright.config.ts --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}' - - name: Upload test results - if: always() # This ensures step will always run even if prior steps fail + - name: Upload blob report + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v6 + with: + name: blob-report-${{ matrix.shardIndex }} + path: blob-report + retention-days: 1 + + merge-e2e-reports: + if: ${{ !cancelled() }} + needs: [e2e] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version: "22" + cache: "yarn" + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Download blob reports + uses: actions/download-artifact@v6 + with: + path: all-blob-reports + pattern: blob-report-* + merge-multiple: true + - name: Merge into HTML Report + run: npx playwright merge-reports --reporter html ./all-blob-reports + - name: Upload HTML report uses: actions/upload-artifact@v6 with: name: playwright-report - path: | - apps/jetstream-e2e/playwright-report - test-results + path: playwright-report + retention-days: 14 diff --git a/apps/jetstream-e2e/playwright.config.ts b/apps/jetstream-e2e/playwright.config.ts index 849908243..8a561a256 100644 --- a/apps/jetstream-e2e/playwright.config.ts +++ b/apps/jetstream-e2e/playwright.config.ts @@ -32,7 +32,9 @@ export default defineConfig({ maxFailures: process.env.CI ? 2 : 0, timeout: 120000, workers: process.env.CI ? 1 : undefined, - reporter: [['html', { outputFolder: 'playwright-report', open: process.env.CI ? 'never' : 'on-failure' }]], + reporter: process.env.CI + ? [['blob', { outputDir: 'blob-report' }]] + : [['html', { outputFolder: 'playwright-report', open: 'on-failure' }]], use: { actionTimeout: THIRTY_SECONDS, navigationTimeout: THIRTY_SECONDS, From fd1f1ecd88718941ba7af616f4c4e488693e6b36 Mon Sep 17 00:00:00 2001 From: Austin Turner Date: Sat, 11 Apr 2026 13:09:44 -0700 Subject: [PATCH 2/3] Update .github/workflows/ci.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 373189a9a..051794f1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -172,7 +172,7 @@ jobs: retention-days: 1 merge-e2e-reports: - if: ${{ !cancelled() }} + if: ${{ always() && !cancelled() }} needs: [e2e] runs-on: ubuntu-latest steps: From ef7d3f73eec526e53698088ba624bec22ed6064d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 20:13:22 +0000 Subject: [PATCH 3/3] fix: correct blob-report upload path to match Playwright config directory Agent-Logs-Url: https://github.com/jetstreamapp/jetstream/sessions/d9806055-1e70-475e-8a79-85ef61b70a9d Co-authored-by: paustint <5461649+paustint@users.noreply.github.com> --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 051794f1f..e97107dd0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -168,7 +168,7 @@ jobs: uses: actions/upload-artifact@v6 with: name: blob-report-${{ matrix.shardIndex }} - path: blob-report + path: apps/jetstream-e2e/blob-report retention-days: 1 merge-e2e-reports: @@ -190,7 +190,9 @@ jobs: pattern: blob-report-* merge-multiple: true - name: Merge into HTML Report - run: npx playwright merge-reports --reporter html ./all-blob-reports + run: | + mkdir -p all-blob-reports + npx playwright merge-reports --reporter html ./all-blob-reports - name: Upload HTML report uses: actions/upload-artifact@v6 with: