e2e-headed.yml
1 name: E2E Headed Chrome 2 3 on: 4 push: 5 branches: [main, dev] 6 paths: 7 - 'extension/**' 8 - 'src/browser/**' 9 - 'src/daemon.ts' 10 - 'src/execution.ts' 11 - 'src/interceptor.ts' 12 - 'tests/e2e/**' 13 - 'tests/smoke/**' 14 - '.github/actions/setup-chrome/**' 15 - '.github/workflows/e2e-headed.yml' 16 pull_request: 17 branches: [main, dev] 18 paths: 19 - 'extension/**' 20 - 'src/browser/**' 21 - 'src/daemon.ts' 22 - 'src/execution.ts' 23 - 'src/interceptor.ts' 24 - 'tests/e2e/**' 25 - 'tests/smoke/**' 26 - '.github/actions/setup-chrome/**' 27 - '.github/workflows/e2e-headed.yml' 28 workflow_dispatch: 29 30 concurrency: 31 group: e2e-${{ github.ref }} 32 cancel-in-progress: true 33 34 jobs: 35 e2e-headed: 36 runs-on: ${{ matrix.os }} 37 strategy: 38 fail-fast: false 39 matrix: 40 # NOTE: Windows excluded — browser-actions/setup-chrome hangs during 41 # Chrome MSI installation on Windows runners (known issue). 42 os: [ubuntu-latest, macos-latest] 43 timeout-minutes: 20 44 steps: 45 - uses: actions/checkout@v6 46 47 - uses: actions/setup-node@v6 48 with: 49 node-version: '22' 50 cache: 'npm' 51 52 - name: Install dependencies 53 run: npm ci 54 55 - name: Setup Chrome 56 uses: ./.github/actions/setup-chrome 57 id: setup-chrome 58 59 - name: Build 60 run: npm run build 61 62 - name: Run E2E tests (Linux, via xvfb) 63 if: runner.os == 'Linux' 64 run: | 65 xvfb-run --auto-servernum --server-args="-screen 0 1280x720x24" \ 66 npx vitest run tests/e2e/ --reporter=verbose 67 68 - name: Run E2E tests (macOS / Windows) 69 if: runner.os != 'Linux' 70 run: npx vitest run tests/e2e/ --reporter=verbose