# Runs the whole proof on the Gitea runner: gate, the editor suite and the three example games. # # `runs-on: game-maker-ci` picks the image built from tools/ci/Dockerfile. The render device and # /dev/shm come from the runner's own container.options (/_stacks/git/runner/config.yaml), not # from here – without them chromium falls back to software WebGL. # # Two jobs without `needs:`, so they start together and use both slots of the runner # (`capacity: 2`, four cores). The gate no longer stands in front of the suite: a lint error used # to cost the full e2e run before it was reported, and the run reported it after six minutes # instead of one. Both still have to pass for the push to be green. # # The price is contention: while the gate runs, vitest and chromium share the four cores, and the # suite measures text widths and frame counts. That is why the gate caps vitest at two workers # (GM_TEST_WORKERS) – two cores stay free for the browser for the whole overlap. name: game-maker on: push: workflow_dispatch: jobs: gate: runs-on: game-maker-ci timeout-minutes: 20 steps: - uses: actions/checkout@v4 - name: Install run: npm ci --no-audit --no-fund - name: Gate run: ./check.sh env: GM_TEST_WORKERS: 2 suite: runs-on: game-maker-ci timeout-minutes: 45 steps: - uses: actions/checkout@v4 - name: Versions run: | node --version chromium --version php --version | head -1 - name: Install run: npm ci --no-audit --no-fund - name: Build run: npm run build - name: Editor suite run: tools/ci/run-e2e.sh - name: Example games run: tools/ci/run-smokes.sh