import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; describe("ci workflow guards", () => { it("kills timed manual checkout fetches after the grace period", () => { const workflowPaths = [ ".github/workflows/ci.yml", ".github/workflows/ci-check-testbox.yml", ".github/workflows/ci-build-artifacts-testbox.yml", ]; for (const workflowPath of workflowPaths) { const workflow = readFileSync(workflowPath, "utf8"); const fetchTimeouts = workflow.match( /timeout --signal=TERM[^\n]* 30s git -C "\$workdir"/g, ); expect(fetchTimeouts?.length, workflowPath).toBeGreaterThan(0); expect(fetchTimeouts, workflowPath).toEqual( fetchTimeouts?.map( () => 'timeout --signal=TERM --kill-after=10s 30s git -C "$workdir"', ), ); } }); it("runs dependency policy guards in PR CI preflight", () => { const workflow = readFileSync(".github/workflows/ci.yml", "utf8"); const preflightGuards = workflow.slice( workflow.indexOf("guards)"), workflow.indexOf("prod-types)"), ); expect(workflow).toContain("check-guards"); expect(preflightGuards).toContain("pnpm deps:shrinkwrap:check"); expect(preflightGuards).toContain("pnpm deps:patches:check"); }); it("keeps push docs validation ClawHub-backed", () => { const workflow = readFileSync(".github/workflows/docs.yml", "utf8"); expect(workflow).toContain("repository: openclaw/clawhub"); expect(workflow).toContain("path: clawhub-source"); expect(workflow).toContain( "OPENCLAW_DOCS_SYNC_CLAWHUB_REPO: ${{ github.workspace }}/clawhub-source", ); }); });