Skip to content

feat: end early when the human is gone, and confirm the ending #70

feat: end early when the human is gone, and confirm the ending

feat: end early when the human is gone, and confirm the ending #70

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- run: bun install --frozen-lockfile
- name: install chromium for the UI e2e
run: bunx playwright-core install --with-deps chromium
- name: typecheck
run: bun run typecheck
- name: lint (biome + oxlint + relay embed sync)
run: bun run lint
- name: unit + integration tests
run: bun test src/ test-app/ e2e/ui.spec.ts
- name: coverage summary (reporting only)
# Reporting, not an enforced gate — deliberately. deploy.ts and
# webhook.ts are exercised by the live e2e (bun run test:e2e), not by
# unit tests, because unit-testing them would mean mocking the Solari
# SDK, which the anti-slop no-module-mocking rule forbids. A hard unit
# threshold would therefore be a fake gate. The number is here to read.
run: bun test --coverage src/ test-app/
- name: build
run: bun run build
- name: dist smoke — run the shipped artifact under node
# Pins the CJS-interop path a consumer actually executes; bun-driven
# tests cannot catch dist-only breakage (learned from a broken QR).
run: node scripts/dist-smoke.mjs
# e2e (bun run test:e2e) is intentionally not run in CI: it needs a real
# SOLARI_API_KEY and spends plan quota. It is the pre-publish gate, run
# locally against the live API.