Files
edentext/.github/workflows/ci.yml
T
Steffen Becker 6b6b621a5a test: the browser runs take their engine from BROWSER, and CI runs all three
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.
2026-09-04 19:30:14 +02:00

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