From 7d5f736f418beebb171eede353b017f458763563 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Mon, 8 Jun 2026 22:35:48 +0800 Subject: [PATCH] ci: centralize all tests in main.yml; drop redundant test re-run from publish.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two related cleanups: 1. **main.yml now runs ALL package tests**, not just melonjs. The adapter test specs (3 × matter, 3 × planck) existed but were only invoked at publish time — meaning PR merges never gated on them. The new `pnpm -F @melonjs/{matter,planck}-adapter test` lines run inside the same `mcr.microsoft.com/playwright:v1.59.1-noble` container the existing melonjs test job uses, so chromium is pre-baked, no install step needed. 2. **publish.yml stops re-running tests** that main.yml now gates: - Drop the `Install Playwright browsers` step entirely (no tests at publish time → no chromium needed). - melonjs `pnpm dist` (`clean + lint + vitest + build + doc`) is replaced with new `pnpm dist:publish` (drops `vitest`). - matter / planck build_cmd drops the trailing `&& pnpm test`. This also sidesteps a real Playwright bug we've been hitting all day: on bare `ubuntu-latest` runners, `playwright install chromium` was hanging indefinitely on the post-download extract step (download itself completes in <2s; extract emits no further log line and times out the entire job). Six consecutive runs hit the same hang on distinct runners. Identified via the `DEBUG: pw:install` + `timeout-minutes: 10` instrumentation from #1496. Sidestepping the install entirely is the cleanest fix and aligns with main.yml's container-based approach anyway. Local verify: - `pnpm -F @melonjs/matter-adapter test` → 177 / 177 pass - `pnpm -F @melonjs/planck-adapter test` → 169 / 169 pass - `pnpm dist:publish` → clean exit, docs generated Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/main.yml | 2 ++ .github/workflows/publish.yml | 12 +++--------- packages/melonjs/package.json | 1 + 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3b37c93a31..f5c245e47f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -63,6 +63,8 @@ jobs: restore-keys: ${{ runner.os }}-pnpm-store- - run: pnpm i - run: pnpm test + - run: pnpm -F @melonjs/matter-adapter test + - run: pnpm -F @melonjs/planck-adapter test # Windows build — only on master push, not on PRs windows: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c24849ccf3..3fc9b7ccfd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -45,12 +45,6 @@ jobs: - name: Install dependencies run: pnpm install - - name: Install Playwright browsers - timeout-minutes: 10 - env: - DEBUG: pw:install - run: pnpm exec playwright install --with-deps chromium - - name: Lint & check run: | pnpm lint @@ -61,7 +55,7 @@ jobs: run: | if [ "${{ inputs.package }}" = "melonjs" ]; then echo "dir=packages/melonjs" >> "$GITHUB_OUTPUT" - echo "build_cmd=pnpm dist" >> "$GITHUB_OUTPUT" + echo "build_cmd=pnpm dist:publish" >> "$GITHUB_OUTPUT" elif [ "${{ inputs.package }}" = "debug-plugin" ]; then echo "dir=packages/debug-plugin" >> "$GITHUB_OUTPUT" echo "build_cmd=pnpm clean && pnpm build" >> "$GITHUB_OUTPUT" @@ -73,10 +67,10 @@ jobs: echo "build_cmd=pnpm clean && pnpm build" >> "$GITHUB_OUTPUT" elif [ "${{ inputs.package }}" = "matter-adapter" ]; then echo "dir=packages/matter-adapter" >> "$GITHUB_OUTPUT" - echo "build_cmd=pnpm clean && pnpm build && pnpm test" >> "$GITHUB_OUTPUT" + echo "build_cmd=pnpm clean && pnpm build" >> "$GITHUB_OUTPUT" elif [ "${{ inputs.package }}" = "planck-adapter" ]; then echo "dir=packages/planck-adapter" >> "$GITHUB_OUTPUT" - echo "build_cmd=pnpm clean && pnpm build && pnpm test" >> "$GITHUB_OUTPUT" + echo "build_cmd=pnpm clean && pnpm build" >> "$GITHUB_OUTPUT" elif [ "${{ inputs.package }}" = "capacitor-plugin" ]; then echo "dir=packages/capacitor-plugin" >> "$GITHUB_OUTPUT" echo "build_cmd=pnpm clean && pnpm build" >> "$GITHUB_OUTPUT" diff --git a/packages/melonjs/package.json b/packages/melonjs/package.json index f3ad09f81c..4eb8a09bf6 100644 --- a/packages/melonjs/package.json +++ b/packages/melonjs/package.json @@ -80,6 +80,7 @@ "lint": "eslint src tests", "build": "pnpm lint && tsx scripts/build.js && pnpm types", "dist": "pnpm clean && pnpm lint && pnpm vitest run && pnpm build && pnpm doc && cp ../../README.md .", + "dist:publish": "pnpm clean && pnpm lint && pnpm build && pnpm doc && cp ../../README.md .", "doc": "typedoc src/index.ts --tsconfig tsconfig.build.json --readme DOC_README.md --hideGenerator --name 'melonJS' --navigation.includeCategories true --categorizeByGroup false", "doc:watch": "typedoc src/index.ts --tsconfig tsconfig.build.json --readme DOC_README.md --hideGenerator --name 'melonJS' --navigation.includeCategories true --categorizeByGroup false --watch --skipErrorChecking --preserveWatchOutput --logLevel Error", "serve": "serve docs",