name: Playwright Tests on: push: branches: [main, master] pull_request: branches: [main, master] jobs: playwright-tests: timeout-minutes: 60 runs-on: ubuntu-latest container: image: mcr.microsoft.com/playwright:v1.50.0-noble strategy: fail-fast: false matrix: shardIndex: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] shardTotal: [10] steps: - uses: actions/checkout@v4 - name: Install unzip run: apt-get update && apt-get install -y unzip - uses: oven-sh/setup-bun@v2 - uses: actions/setup-node@v4 with: node-version: 20 - name: Install dependencies run: bun install --frozen-lockfile - name: Set up Git safe directory run: git config --global --add safe.directory /__w/Viewers/Viewers - name: Run Playwright tests run: export NODE_OPTIONS="--max_old_space_size=8192" && bun x playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} - name: Upload blob report to GitHub Actions Artifacts if: ${{ !cancelled() }} uses: actions/upload-artifact@v4 with: name: blob-report-${{ matrix.shardIndex }} path: blob-report retention-days: 1 merge-reports: if: ${{ !cancelled() }} needs: [playwright-tests] runs-on: ubuntu-latest container: image: mcr.microsoft.com/playwright:v1.48.1-focal steps: - name: Install unzip run: apt-get update && apt-get install -y unzip - uses: oven-sh/setup-bun@v2 - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - name: Install dependencies run: bun install --frozen-lockfile - name: Set up Git safe directory run: git config --global --add safe.directory /__w/Viewers/Viewers - name: Download blob reports from GitHub Actions Artifacts uses: actions/download-artifact@v4 with: path: all-blob-reports pattern: blob-report-* merge-multiple: true - name: Merge into HTML Report run: bun x playwright merge-reports --reporter html ./all-blob-reports - name: Upload HTML report uses: actions/upload-artifact@v4 with: name: html-report--attempt-${{ github.run_attempt }} path: playwright-report retention-days: 14