Skip to content

refactor(v11.0.0): drop pinchtab, single browser surface (chrome-devt… #55

refactor(v11.0.0): drop pinchtab, single browser surface (chrome-devt…

refactor(v11.0.0): drop pinchtab, single browser surface (chrome-devt… #55

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
typecheck:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- run: bun run typecheck
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- run: bun test
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- run: bun run lint
schemas:
# Fails if `bun run schemas:emit` would produce a diff — enforces that the
# committed JSON Schemas match the zod sources.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- run: bun run schemas:emit
- run: git diff --exit-code schemas/
upstream-scan:
# Dry-run in CI so any drift shows up in the PR. This is not a gate —
# the scheduled upstream-sync workflow proposes fixes.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- run: bun run upstream:scan
bench:
# Re-run the baseline on macOS and assert no hook p95 regressed > 20%
# vs the committed bench/baseline-bash.json. macOS-only because the
# baseline itself was taken on macOS; Linux/Windows numbers would trip
# the gate with platform-derived noise.
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- run: bun run bench:check -- --iters=20 --max=0.20
install-e2e:
# Dedicated job for the E2E install tests so install failures are
# surfaced as their own PR check (otherwise they're buried in the
# `test` job among 240+ other tests). Runs the same tests as `test`
# but only the install-e2e file, with the same matrix.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- name: Run install E2E tests (HOME=tmpdir, CC_SKIP_DEPS=1)
run: bun test tests/install-e2e.test.ts tests/golden-migrations.test.ts
install-bash-bootstrap:
# Smoke test setup.sh's bootstrap path (the bash wrapper that ensures
# Bun is installed before exec'ing bun src/setup.ts). --dry-run prints
# the planned actions without writing — enough to validate setup.sh
# parses and dispatches correctly.
#
# Linux + macOS only. Windows users go through setup.ps1, which has
# its own (currently untested) bootstrap; that gap is documented in
# docs/migration-coexistence.md.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: ">=1.1.30"
- run: bun install --frozen-lockfile
- name: bash setup.sh --dry-run
run: bash setup.sh --dry-run
env:
# Use the runner's HOME so we don't accidentally pollute it with
# cc-settings artifacts (--dry-run wouldn't, but defense-in-depth).
CC_SKIP_DEPS: "1"