Skip to content

Merge pull request #60 from HugoFara/docs-standalone-ik-sync #37

Merge pull request #60 from HugoFara/docs-standalone-ik-sync

Merge pull request #60 from HugoFara/docs-standalone-ik-sync #37

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
backend:
name: Backend (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13"]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Install project
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
# tests/test_acm_processing.py requires `monsees_retarget`, a lab-private
# dependency not on PyPI. Skipped in CI; run locally with the package
# installed or MONSEES_RETARGET set.
- name: Run pytest
run: pytest --ignore=tests/test_acm_processing.py -v
frontend:
name: Frontend (Node ${{ matrix.node-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ["24"]
steps:
- uses: actions/checkout@v5
# Node 24 ships npm 11. Sticking with Node 22 (npm 10) trips
# `npm ci` on lockfiles generated by npm 11 because of how the two
# versions disagree about platform-specific optionalDependencies.
- name: Set up Node ${{ matrix.node-version }}
uses: actions/setup-node@v5
with:
node-version: ${{ matrix.node-version }}
cache: npm
cache-dependency-path: frontend/package-lock.json
# Parity tests in frontend/src/__tests__ shell out to python3 against
# backend.config_io / backend.keypoints_io as the canonical reference.
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
- name: Install backend (for parity tests)
run: pip install -e ".[dev]"
# synth_stress.h5 is gitignored (~40 MB). Regenerate a smaller fixture
# for the parity test — the test is size-agnostic, it only spot-checks
# JS vs Python parity at 1000 random indices.
- name: Generate synth_stress fixture
run: python tools/make_synth_dataset.py --frames 5000 --keypoints 30 --out data/synth_stress.h5
- name: Install frontend dependencies
working-directory: frontend
run: npm ci
- name: Typecheck and build
working-directory: frontend
run: npm run build
- name: Run vitest
working-directory: frontend
run: npm test