diff --git a/.github/workflows/ci-build-artifacts-testbox.yml b/.github/workflows/ci-build-artifacts-testbox.yml index 126eabf48687..531aa7dd44eb 100644 --- a/.github/workflows/ci-build-artifacts-testbox.yml +++ b/.github/workflows/ci-build-artifacts-testbox.yml @@ -261,6 +261,6 @@ jobs: - name: Run Testbox uses: useblacksmith/run-testbox@3f60ff9ceb2c10c3feefa87dc0c6490cffae059d - if: success() + if: always() env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" diff --git a/.github/workflows/ci-check-arm-testbox.yml b/.github/workflows/ci-check-arm-testbox.yml index 377eefcd6b09..d0ffa28077c8 100644 --- a/.github/workflows/ci-check-arm-testbox.yml +++ b/.github/workflows/ci-check-arm-testbox.yml @@ -179,6 +179,6 @@ jobs: - name: Run Testbox uses: useblacksmith/run-testbox@5ca05834db1d3813554d1dd109e5f2087a8d7cbc - if: success() + if: always() env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" diff --git a/.github/workflows/ci-check-testbox.yml b/.github/workflows/ci-check-testbox.yml index 5ec4448d68ff..adf5037be083 100644 --- a/.github/workflows/ci-check-testbox.yml +++ b/.github/workflows/ci-check-testbox.yml @@ -33,7 +33,7 @@ jobs: contents: read name: "check" runs-on: blacksmith-32vcpu-ubuntu-2404 - timeout-minutes: ${{ fromJSON(inputs.timeout_minutes || '30') }} + timeout-minutes: ${{ fromJSON(inputs.timeout_minutes || '120') }} steps: - name: Begin Testbox uses: useblacksmith/begin-testbox@233448af4bfdc6fca509a7f0974411ac6d8a8043 @@ -168,6 +168,6 @@ jobs: - name: Run Testbox uses: useblacksmith/run-testbox@3f60ff9ceb2c10c3feefa87dc0c6490cffae059d - if: success() + if: always() env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index bf16cfcb63d5..0468b193105a 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -1254,17 +1254,30 @@ describe("package artifact reuse", () => { ).toHaveLength(2); }); - it("fails Testbox changed-check delegation when the remote command fails", () => { + it("finalizes Testbox delegation even when setup or the remote command fails", () => { const workflow = readFileSync(CI_CHECK_TESTBOX_WORKFLOW, "utf8"); - const runTestboxStep = workflowJob(CI_CHECK_TESTBOX_WORKFLOW, "check").steps?.find( - (step) => step.name === "Run Testbox", + const checkTestboxJob = workflowJob(CI_CHECK_TESTBOX_WORKFLOW, "check"); + const runTestboxStep = workflowStep(checkTestboxJob, "Run Testbox"); + const runArmTestboxStep = workflowStep( + workflowJob(CI_CHECK_ARM_TESTBOX_WORKFLOW, "check-arm"), + "Run Testbox", + ); + const runBuildArtifactsTestboxStep = workflowStep( + workflowJob(CI_BUILD_ARTIFACTS_TESTBOX_WORKFLOW, "build-artifacts"), + "Run Testbox", ); expect(workflow).toContain('PNPM_CONFIG_STORE_DIR: "/tmp/openclaw-pnpm-store"'); expect(workflow).not.toContain("PNPM_CONFIG_MODULES_DIR"); expect(workflow).not.toContain("PNPM_CONFIG_VIRTUAL_STORE_DIR"); - expect(runTestboxStep?.uses).toContain("useblacksmith/run-testbox@"); - expect(runTestboxStep?.["continue-on-error"]).toBeUndefined(); + expect(checkTestboxJob["timeout-minutes"]).toBe( + "${{ fromJSON(inputs.timeout_minutes || '120') }}", + ); + expect(runTestboxStep.uses).toContain("useblacksmith/run-testbox@"); + expect(runTestboxStep.if).toBe("always()"); + expect(runArmTestboxStep.if).toBe("always()"); + expect(runBuildArtifactsTestboxStep.if).toBe("always()"); + expect(runTestboxStep["continue-on-error"]).toBeUndefined(); }); it("allows the Telegram lane to run from reusable package acceptance artifacts", () => {