Skip to content

fix: make the wincairo serializers patch layout-tolerant so both webk… #157

fix: make the wincairo serializers patch layout-tolerant so both webk…

fix: make the wincairo serializers patch layout-tolerant so both webk… #157

Workflow file for this run

name: validate
on:
push:
branches: [main]
paths: ['src/**', 'tests/**', 'tools/**', 'examples/**', 'biome.json', 'bunfig.toml', 'tsconfig.json', 'tsconfig.base.json', 'package.json', 'bun.lock', '.bun-version', '.github/workflows/validate.yml']
pull_request:
branches: [main]
paths: ['src/**', 'tests/**', 'tools/**', 'examples/**', 'biome.json', 'bunfig.toml', 'tsconfig.json', 'tsconfig.base.json', 'package.json', 'bun.lock', '.bun-version', '.github/workflows/validate.yml']
concurrency:
group: validate-${{ github.ref }}
cancel-in-progress: true
jobs:
validate:
name: validate (${{ matrix.os }})
runs-on: ${{ matrix.os }}
# Hard ceiling so a hung native/FFI call (e.g. a blocking GIO read deadlocking
# the GTK main loop) fails fast instead of burning hours up to GitHub's 6h cap.
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Install Linux native deps (GTK 4 + WebKitGTK 6.0 + libnotify + libsecret + Xvfb)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-4-1 libwebkitgtk-6.0-4 libnotify4 libsecret-1-0 xvfb
- uses: oven-sh/setup-bun@v2
with:
bun-version-file: .bun-version
- name: Install dependencies
run: bun install --frozen-lockfile
# WebKitGTK's bubblewrap sandbox and GPU acceleration are unavailable on
# the headless runner; disable them so the GTK/WebKitGTK tests can run.
- name: Validate (Linux — under Xvfb for GTK tests)
if: runner.os == 'Linux'
env:
WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS: "1"
WEBKIT_DISABLE_COMPOSITING_MODE: "1"
LIBGL_ALWAYS_SOFTWARE: "1"
GDK_BACKEND: x11
run: xvfb-run -a bun run validate
- name: Validate (macOS)
if: runner.os == 'macOS'
run: bun run validate
# Windows runs a SCOPED validation: format + lint + type-check (all
# platform-agnostic) plus the Windows backend tests, which pass on a real
# windows-latest runner (engine-gated WebKit tests skip without
# BUNMASKA_WEBKIT_PATH). The full cross-platform suite is not yet
# POSIX/Windows path-portable; running it on Windows is a separate
# test-hardening follow-up (see .admin/WINDOWS.md).
- name: Validate (Windows — backend tests + lint + type-check)
if: runner.os == 'Windows'
run: bun run validate:windows