Skip to content

Commit 43ebb65

Browse files
author
ruanjunhao04
committed
ci: enforce frontend build and multi-browser e2e
1 parent 8b459a6 commit 43ebb65

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,12 @@ jobs:
114114
- uses: actions/setup-node@v4
115115
with:
116116
node-version: "20"
117-
- name: Install JS dev-deps
118-
run: npm ci || npm install
117+
- name: Install JS dev-deps from lockfile
118+
run: npm ci
119+
- name: Type-check and build TypeScript modules
120+
run: npm run check:frontend
121+
- name: Enforce compressed frontend budgets
122+
run: python3 scripts/frontend_budget.py
119123
- name: Install package + test extra
120124
run: |
121125
python -m pip install --upgrade pip
@@ -132,17 +136,23 @@ jobs:
132136
# files across workers.
133137
run: pytest tests/test_frontend_*.py -n auto --dist loadfile --timeout=180 -ra
134138

135-
# ── End-to-end smoke (real Quart/Hypercorn app + real headless Chromium) ──
139+
# ── End-to-end smoke (real app + Chromium, Firefox and WebKit) ──
136140
# Boots the actual app on an ephemeral port with a STUB LLM (no API key /
137141
# no network) and drives a real browser to it — asserting the served bundle
138142
# loaded, streaming rendered, and a tool round rendered. This is the only
139143
# lane that catches INTEGRATION-class bugs (bundler allowlist, SSE→render)
140144
# that jsdom unit harnesses structurally cannot. CI runners are root, so
141-
# `playwright install --with-deps chromium` installs the GUI libs cleanly;
145+
# `playwright install --with-deps <engine>` installs the GUI libs cleanly;
142146
# the conftest LD_LIBRARY_PATH bootstrap is a no-op there (libs already on
143147
# the system) and the rootless-conda fallback for shared dev nodes.
144148
e2e:
145149
runs-on: ubuntu-latest
150+
strategy:
151+
fail-fast: false
152+
matrix:
153+
browser: [chromium, firefox, webkit]
154+
env:
155+
TOFU_E2E_BROWSER: ${{ matrix.browser }}
146156
steps:
147157
- uses: actions/checkout@v4
148158
- uses: actions/setup-python@v5
@@ -153,7 +163,7 @@ jobs:
153163
python -m pip install --upgrade pip
154164
pip install -e ".[test]"
155165
pip install playwright
156-
- name: Install Chromium + system deps
157-
run: python -m playwright install --with-deps chromium
158-
- name: Run E2E smoke + critical journeys
166+
- name: Install ${{ matrix.browser }} + system deps
167+
run: python -m playwright install --with-deps ${{ matrix.browser }}
168+
- name: Run E2E smoke + critical journeys (${{ matrix.browser }})
159169
run: pytest tests/test_e2e_smoke.py tests/test_e2e_journeys.py -m visual -ra

0 commit comments

Comments
 (0)