diff --git a/.github/workflows/tui-pty.yml b/.github/workflows/tui-pty.yml index 4a11889bf786..45236f604fa1 100644 --- a/.github/workflows/tui-pty.yml +++ b/.github/workflows/tui-pty.yml @@ -27,7 +27,9 @@ env: jobs: tui-pty: runs-on: ubuntu-24.04 - timeout-minutes: 5 + timeout-minutes: 8 + env: + OPENCLAW_TUI_PTY_INCLUDE_LOCAL: "1" steps: - name: Checkout uses: actions/checkout@v6 @@ -38,4 +40,4 @@ jobs: install-bun: "false" - name: Run TUI PTY tests - run: timeout --kill-after=30s 120s node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.ts + run: timeout --kill-after=30s 240s node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.ts diff --git a/src/infra/vitest-e2e-config.test.ts b/src/infra/vitest-e2e-config.test.ts index 607791b08b46..d9396423fae8 100644 --- a/src/infra/vitest-e2e-config.test.ts +++ b/src/infra/vitest-e2e-config.test.ts @@ -22,6 +22,10 @@ describe("e2e vitest config", () => { "src/gateway/sessions-history-http.test.ts", BUNDLED_PLUGIN_E2E_TEST_GLOB, ]); + expect(e2eConfig.test?.exclude).toContain("src/tui/tui-pty-harness.e2e.test.ts"); + const excludesTuiPtyLocal = + e2eConfig.test?.exclude?.includes("src/tui/tui-pty-local.e2e.test.ts") ?? false; + expect(excludesTuiPtyLocal).toBe(process.arch === "arm64"); expect(e2eConfig.test?.pool).toBe("threads"); expect(e2eConfig.test?.isolate).toBe(false); expect(normalizeConfigPath(e2eConfig.test?.runner)).toBe("test/non-isolated-runner.ts"); diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index 07e8a002d697..c07446dfcfc5 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -1544,8 +1544,10 @@ describe("package artifact reuse", () => { const job = workflowJob(TUI_PTY_WORKFLOW, "tui-pty"); const step = workflowStep(job, "Run TUI PTY tests"); + expect(job.env?.OPENCLAW_TUI_PTY_INCLUDE_LOCAL).toBe("1"); + expect(job["timeout-minutes"]).toBe(8); expect(step.run).toBe( - "timeout --kill-after=30s 120s node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.ts", + "timeout --kill-after=30s 240s node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.ts", ); }); }); diff --git a/test/vitest/vitest.e2e.config.ts b/test/vitest/vitest.e2e.config.ts index 5ef1989763ec..b1d5589e5d85 100644 --- a/test/vitest/vitest.e2e.config.ts +++ b/test/vitest/vitest.e2e.config.ts @@ -24,7 +24,14 @@ const { projects: _projects, ...baseTest } = baseTestWithProjects as { projects?: string[]; setupFiles?: string[]; }; -const exclude = (baseTest.exclude ?? []).filter((p) => p !== "**/*.e2e.test.ts"); +const tuiPtyExcludes = [ + "src/tui/tui-pty-harness.e2e.test.ts", + ...(process.arch === "arm64" ? ["src/tui/tui-pty-local.e2e.test.ts"] : []), +]; +const exclude = [ + ...(baseTest.exclude ?? []).filter((p) => p !== "**/*.e2e.test.ts"), + ...tuiPtyExcludes, +]; export default defineConfig({ ...base,