From a88e9f74b72d30cfd25b9096a67a884149fafd9e Mon Sep 17 00:00:00 2001 From: 777genius Date: Wed, 20 May 2026 17:54:08 +0300 Subject: [PATCH] test(opencode): prove live team launch path --- .../OpenCodeTeamProvisioning.live.test.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/main/services/team/OpenCodeTeamProvisioning.live.test.ts b/test/main/services/team/OpenCodeTeamProvisioning.live.test.ts index 176b47b1..a80f4837 100644 --- a/test/main/services/team/OpenCodeTeamProvisioning.live.test.ts +++ b/test/main/services/team/OpenCodeTeamProvisioning.live.test.ts @@ -142,16 +142,41 @@ liveDescribe('OpenCode team provisioning live e2e', () => { ), progressDump ).toBe(true); + expect( + progressEvents.some((progress) => + progress.message.includes('Validating OpenCode team launch gate') + ), + progressDump + ).toBe(true); + expect( + progressEvents.some((progress) => + progress.message.includes('Starting OpenCode sessions through runtime adapter') + ), + progressDump + ).toBe(true); + expect(progressDump).not.toContain('Starting Claude CLI process for team launch'); + expect(progressDump).not.toContain('OpenCode team launch is not enabled'); const runtimeSnapshot = await svc.getTeamAgentRuntimeSnapshot(teamName); + expect(runtimeSnapshot.runId).toBe(runId); expect(runtimeSnapshot.members.alice).toMatchObject({ alive: true, + providerId: 'opencode', + laneId: 'primary', + laneKind: 'primary', runtimeModel: selectedModel, + historicalBootstrapConfirmed: true, }); expect(runtimeSnapshot.members.bob).toMatchObject({ alive: true, + providerId: 'opencode', + laneId: 'primary', + laneKind: 'primary', runtimeModel: selectedModel, + historicalBootstrapConfirmed: true, }); + expect(hasOpenCodeRuntimeHandle(runtimeSnapshot.members.alice)).toBe(true); + expect(hasOpenCodeRuntimeHandle(runtimeSnapshot.members.bob)).toBe(true); await expect( readOpenCodeRuntimeLaneIndex(getTeamsBasePath(), teamName) ).resolves.toMatchObject({ @@ -254,3 +279,15 @@ function createStableBridgeEnv(): NodeJS.ProcessEnv { USERPROFILE: realHome, }; } + +function hasOpenCodeRuntimeHandle(member: { + readonly pid?: number; + readonly runtimePid?: number; + readonly runtimeSessionId?: string; +}): boolean { + return ( + (typeof member.pid === 'number' && member.pid > 0) || + (typeof member.runtimePid === 'number' && member.runtimePid > 0) || + (typeof member.runtimeSessionId === 'string' && member.runtimeSessionId.trim().length > 0) + ); +}