diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml index 80742e64..b599c6bb 100644 --- a/.github/workflows/deps.yml +++ b/.github/workflows/deps.yml @@ -237,9 +237,20 @@ jobs: run: | gh label create deps-ready --color 0E8A16 --description 'Green; a runtime minor or a Playwright bump waiting for the deps lane' 2>/dev/null || true gh pr edit "${{ github.event.pull_request.number }}" --add-label deps-ready + + # its own job: turning auto-merge on needs contents: write, which the gate (it checks out and runs the PR's + # code) should not hold. No checkout here; it only runs after a green deps-gate. + automerge: + needs: [scope, gate] + if: needs.scope.outputs.cls == 'auto' && github.base_ref == 'deps' + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: - name: auto-merge - if: needs.scope.outputs.cls == 'auto' && github.base_ref == 'deps' env: GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} # waits for whatever the ruleset still wants (pc-battery from the desktop for a runtime patch) run: gh pr merge "${{ github.event.pull_request.number }}" --auto --squash diff --git a/scripts/ci/battery.cjs b/scripts/ci/battery.cjs index 9dda2ec7..15767f9d 100755 --- a/scripts/ci/battery.cjs +++ b/scripts/ci/battery.cjs @@ -231,7 +231,8 @@ async function run(argv) { // loaded shard fails the same suite twice), and a shard without retries stays inside its estimate const retry = set === 'confirm' || argv.includes('--retry'); // past the deadline no suite starts: the rest report `notrun` instead of the job being killed with nothing said - const deadline = Date.now() + Number(opt(argv, '--deadline') || 0) * 60000 || Infinity; + const dl = Number(opt(argv, '--deadline') || 0); + const deadline = dl ? Date.now() + dl * 60000 : Infinity; const save = () => fs.writeFileSync(path.join(out, `${set === 'confirm' ? 'confirm' : 'results'}-${shard}.json`), JSON.stringify({ shard, of, set, results }, null, 1)); console.log(`shard ${shard}/${of}: ${mine.length} suites, est ${Math.round(mine.reduce((t, s) => t + (b.suites[s] || 60), 0) / 60)} min, ${par} at a time`); /** @type {Promise | null} */ diff --git a/tests/e2e/battery.json b/tests/e2e/battery.json index 2a5046bf..1c251560 100644 --- a/tests/e2e/battery.json +++ b/tests/e2e/battery.json @@ -50,6 +50,7 @@ "drawer-layering": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", "edit-move-games": "red on the unchanged base too (deps-1 A/B on 1f3b9dd5, 2026-10-23)", "editor-modes": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", + "env-preset-broadcast": "flaky on the GitHub runner (SwiftShader): red on its shard in deps-auto runs 10, 12 and 13 (green on confirm), 2026-10-25; a two-peer broadcast check like knock-physics", "environment": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", "explorer-drop": "flaky on the GitHub runner (SwiftShader): red or green-on-retry in deps-auto run 5 or 6 with unchanged code, 2026-10-24", "explorer-header-panels": "red on the GitHub runner in deps-auto run 7 or 8 after a retry / the fresh-runner confirm, unchanged code (two-peer replication stalls on SwiftShader), 2026-10-24", @@ -105,6 +106,7 @@ "kit-core": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", "kit-instancing": "red on the unchanged base too (deps-1 A/B on 1f3b9dd5, 2026-10-23)", "knock-node": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", + "knock-physics": "flaky on the GitHub runner (SwiftShader), about half its shards red since deps-auto run 8 (8, 9, 12, 14, 17), red on both confirm tries in run 17, 2026-10-25: \"2.3 (premise) B sees the ball parked\"", "lock-dragrow": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", "lock-dragrow-sync": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", "lock-panels": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24", @@ -163,6 +165,7 @@ "scatter-edit": "red on the GitHub runner (SwiftShader) on released 1.43.2 code: deps-auto run 12 (shard; green on confirm) and run 13 (shard + both confirm tries), 2026-10-25 (peer B never gets the terrain)", "scatter-select": "red on the GitHub runner (SwiftShader) twice, its shard + a fresh confirm runner, on released 1.43.2 code: deps-auto run 12, 2026-10-25 (peer B never gets the terrain)", "scatter-sources": "red on the GitHub runner (SwiftShader) twice, its shard + a fresh confirm runner, on released 1.43.2 code: deps-auto run 12, 2026-10-25 (600 s suite timeout, all checks reached green)", + "scatter-surface": "red on the GitHub runner (SwiftShader) on its shard in deps-auto runs 13, 14 and 16 (green on confirm in 13/14, red on both confirm tries in 16), 2026-10-25: the Add scatter click times out (locator.click 30 s), not the terrain race", "scene-budget": "red on the unchanged base too (deps-1 A/B on 1f3b9dd5, 2026-10-23)", "scene-open-guard": "flaky on the GitHub runner (SwiftShader): red or green-on-retry in deps-auto run 5 or 6 with unchanged code, 2026-10-24", "scene-physics-state": "red on the GitHub runner (SwiftShader, no retry) with unchanged code: deps-auto run 5, 2026-10-24",