# Runs the whole proof on the Gitea runner: gate, the editor suite and the three example games. # # The suite runs on `game-maker-wsl`, the runner in the WSL2 distro game-maker-ci on # melektaus-atx (#283). Its label picks the image built from tools/ci/Dockerfile. The GPU # (/dev/dxg and the Windows driver libraries), /dev/shm and GAME_MAKER_BROWSER=wsl come from that # runner's own config.yaml, not from here – without them chromium falls back to software WebGL and # the harness stops. The gate needs no GPU and runs on `game-maker-ci`, the runner on stein2 with # the same image. Pointing the suite at that label too moves the browser runs back to stein2. # # Two jobs without `needs:`, so they start together. The gate does not stand 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. # # On two runners the gate's vitest no longer shares cores with the suite's chromium, which # measures text widths and frame counts. GM_TEST_WORKERS still caps vitest at two workers, for the # day both jobs share one runner again. 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 # The API's own rules (#180, #179, #231, #266). Not part of check.sh: the host the editor is built # on has no PHP, the image does. - name: PHP tests run: | php tests/php/accounts.test.php php tests/php/snapshots.test.php php tests/php/releases.test.php suite: runs-on: game-maker-wsl 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