openApp() launches chromium, firefox or webkit from playwright-core; the smoke and DOM runs pass in each. CI runs both per engine, WebKit on macOS for Safari's text shaping. build.target is set explicitly to the browsers the bundle promises. CLAUDE.md is back under its 120-line budget.
72 lines
2.4 KiB
YAML
72 lines
2.4 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
jobs:
|
|
check-and-test:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# CLAUDE.md is read at every session start; detail belongs in the nested files.
|
|
- run: test "$(wc -l < CLAUDE.md)" -le 120 || { echo "CLAUDE.md over its 120-line budget"; exit 1; }
|
|
# The corpus is gitignored, so a test reading it would name a document and fail here.
|
|
- run: |
|
|
! git grep -l "render-parity/fixtures" -- src tests ':!tests/render-parity' \
|
|
|| { echo "a test reads the gitignored parity corpus"; exit 1; }
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: npm
|
|
- run: npm ci
|
|
- run: npm run check
|
|
# xmllint drives the schema-validation leg (it self-skips without it).
|
|
- run: sudo apt-get install -y --no-install-recommends libxml2-utils
|
|
# LibreOffice is not installed here, so the lo-roundtrip suite self-skips
|
|
# (the lo-roundtrip job below runs that leg).
|
|
- run: npm test
|
|
|
|
# The re-save-through-LibreOffice leg, which self-skips everywhere soffice is absent.
|
|
lo-roundtrip:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: npm
|
|
# poppler-utils rasterizes the PDFs the render-consistency leg compares.
|
|
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends libreoffice-writer fonts-liberation poppler-utils
|
|
- run: npm ci
|
|
- run: npm run test:lo
|
|
|
|
# Production build booted in the three engines behind the supported browsers
|
|
# (vite build.target). WebKit runs on macOS: its text shaping there is Safari's.
|
|
browser:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { browser: chromium, os: ubuntu-latest }
|
|
- { browser: firefox, os: ubuntu-latest }
|
|
- { browser: webkit, os: macos-latest }
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 30
|
|
env:
|
|
BROWSER: ${{ matrix.browser }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: npm
|
|
- run: npm ci
|
|
- run: npx playwright-core install --with-deps ${{ matrix.browser }}
|
|
- run: npm run build
|
|
- run: npm run test:smoke
|
|
- run: npm run test:dom
|