flybrain/Makefile
acamilo 660c3cf00d
Some checks failed
ci / node 22 (test + typecheck) (push) Has been cancelled
ci / rust stable (cargo test --workspace --release) (push) Has been cancelled
ci / infra/tests/lint.sh (push) Has been cancelled
ci / playwright apps/stage (allowed to fail) (push) Has been cancelled
flybrain v0.4.0: public tree (history retained privately)
2026-09-21 15:09:46 +00:00

60 lines
2.2 KiB
Makefile

# The same gates CI runs, in the same order, on this box.
#
# make ci install -> artifacts -> test -> typecheck -> rust -> lint
# make e2e the Playwright suite (allowed to fail in CI; run it by hand here)
# make all ci + e2e
#
# `npm run ci` is the same chain minus `npm ci` itself (an npm script cannot safely wipe the
# node_modules it is running out of), so `make install && npm run ci` == `make ci`.
#
# Nothing here needs a ROM, a GPU or a secret. FLY_ROM stays unset, so the ROM-gated Rust tests
# skip with a note on stderr; set it yourself for a full local run:
# FLY_ROM="$$HOME/fly-plays-pokemon/Pokemon Red (U) [S][BF].gb" make rust
SHELL := /usr/bin/env bash
.SHELLFLAGS := -euo pipefail -c
.DEFAULT_GOAL := ci
.PHONY: ci all install artifacts test typecheck rust lint e2e browsers clean
ci: install artifacts test typecheck rust lint
all: ci e2e
install:
npm ci
# The FlyWire connectome is committed (11 MB, CC BY-NC 4.0 — data/fafb-v783/ATTRIBUTION.md), so
# this verifies rather than downloads. Only the raw multi-GB Codex exports are fetched, and only
# by `uv run python3 tools/build_flywire.py`, which CI never runs.
artifacts:
cd data/fafb-v783 && sha256sum -c ../../tools/artifact-checksums.txt
test:
npm test
typecheck:
npm run typecheck
# --release, not debug: the flysim integration test that asserts the feed's 30 Hz contract only
# reaches ~9.5-10.4 Hz in a debug build (known, pre-existing — infra/docs/macros-traps.md). For a
# debug run, skip exactly that test:
# cd services/flysim && cargo test --workspace -- \
# --skip the_service_streams_takes_sugar_checkpoints_and_resumes_after_being_killed
rust:
cd services/flysim && cargo test --workspace --release
lint:
infra/tests/lint.sh
browsers:
cd apps/stage && npx playwright install --with-deps chromium
# Screenshot comparisons at maxDiffPixelRatio 0.002 against the real `vite build` output. Font
# rasterisation and timing make this flaky on a shared runner, which is why CI marks the job
# allowed-to-fail; locally it is a real gate.
e2e:
npm run test:e2e --workspace @flybrain/stage
clean:
rm -rf apps/stage/playwright-report apps/stage/test-results services/flysim/target