name: Tests on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" # uv with a cached wheel store installs requirements.txt in seconds; # plain pip took ~20 s of a ~70 s run. - uses: astral-sh/setup-uv@v10.2.0 with: enable-cache: true cache-dependency-glob: requirements.txt - name: Install dependencies run: uv pip install --system -r requirements.txt # -n auto spreads the suite over every runner core (pytest-xdist is in # requirements.txt); pytest-cov merges the workers' coverage. - name: Run tests with coverage run: | python -m pytest steam_backlog_enforcer/tests/ \ -n auto \ -p no:sugar \ --cov=steam_backlog_enforcer \ --cov-branch \ --cov-fail-under=100 \ -q # vitest's 100% bar used to run only in the local pre-push hook, which # became a 1-second stamp check on 2026-09-20 (pre-commit's manual stage # holds it now). Nothing else in CI runs the web suite, so this job is the # only place that bar is enforced on every push. web-coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 26.13.0 cache: npm cache-dependency-path: web/package-lock.json - name: vitest --coverage, 100% (web UI) run: | npm --prefix web ci npm --prefix web run coverage