/ .github / workflows / e2e-headed.yml
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