diff --git a/scripts/lib/docker-e2e-scenarios.mjs b/scripts/lib/docker-e2e-scenarios.mjs index f0a5e7a6ad5..9d3e292db5e 100644 --- a/scripts/lib/docker-e2e-scenarios.mjs +++ b/scripts/lib/docker-e2e-scenarios.mjs @@ -157,7 +157,10 @@ export const mainLanes = [ weight: 3, }, ), - serviceLane("openwebui", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openwebui", { + lane("openwebui", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openwebui", { + e2eImageKind: "functional", + live: true, + resources: ["live", "live:openai", "service"], timeoutMs: OPENWEBUI_TIMEOUT_MS, weight: 5, }), @@ -580,7 +583,10 @@ const legacyReleasePathChunks = { }; function openWebUILane() { - return serviceLane("openwebui", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openwebui", { + return lane("openwebui", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openwebui", { + e2eImageKind: "functional", + live: true, + resources: ["live", "live:openai", "service"], timeoutMs: OPENWEBUI_TIMEOUT_MS, weight: 5, }); diff --git a/test/scripts/docker-e2e-plan.test.ts b/test/scripts/docker-e2e-plan.test.ts index e2be4377779..3fd62eca832 100644 --- a/test/scripts/docker-e2e-plan.test.ts +++ b/test/scripts/docker-e2e-plan.test.ts @@ -482,16 +482,26 @@ describe("scripts/lib/docker-e2e-plan", () => { expect(plan.lanes).toEqual([ expect.objectContaining({ imageKind: "functional", - live: false, + live: true, name: "openwebui", + resources: expect.arrayContaining(["docker", "live", "live:openai", "service"]), }), ]); expect(plan.needs).toMatchObject({ functionalImage: true, + liveImage: true, package: true, }); }); + it("excludes Open WebUI from skip-live Docker all plans", () => { + const plan = planFor({ + liveMode: "skip", + }); + + expect(plan.lanes.map((lane) => lane.name)).not.toContain("openwebui"); + }); + it("surfaces Docker lane test-state scenarios in plan JSON", () => { const plan = planFor({ selectedLaneNames: [