From b758abd3adc8e1a893a880754f0b5bd7a45797ea Mon Sep 17 00:00:00 2001 From: Shakker Date: Fri, 8 May 2026 20:54:38 +0100 Subject: [PATCH] test: tighten video fallback attempt assertions --- src/video-generation/runtime.test.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/video-generation/runtime.test.ts b/src/video-generation/runtime.test.ts index c1381782ab1..de14122b26e 100644 --- a/src/video-generation/runtime.test.ts +++ b/src/video-generation/runtime.test.ts @@ -29,6 +29,18 @@ function runGenerateVideo(params: GenerateVideoParams) { return generateVideo(params, runtimeDeps); } +function requireAttempt( + result: Awaited>, + index: number, +): NonNullable<(typeof result.attempts)[number]> { + const attempt = result.attempts[index]; + expect(attempt).toBeDefined(); + if (!attempt) { + throw new Error(`expected video generation attempt ${index}`); + } + return attempt; +} + function createProviderOptionsCaptureProvider( capabilities: VideoGenerationProvider["capabilities"], ): { provider: VideoGenerationProvider; getSeenProviderOptions: () => unknown } { @@ -330,8 +342,9 @@ describe("video-generation runtime", () => { expect(result.provider).toBe("byteplus"); expect(result.attempts).toHaveLength(1); - expect(result.attempts[0]?.provider).toBe("openai"); - expect(result.attempts[0]?.error).toMatch(/does not accept providerOptions/); + const attempt = requireAttempt(result, 0); + expect(attempt.provider).toBe("openai"); + expect(attempt.error).toMatch(/does not accept providerOptions/); }); it("skips providers that cannot satisfy reference audio inputs and falls back", async () => { @@ -376,8 +389,9 @@ describe("video-generation runtime", () => { expect(result.provider).toBe("byteplus"); expect(result.attempts).toHaveLength(1); - expect(result.attempts[0]?.provider).toBe("openai"); - expect(result.attempts[0]?.error).toMatch(/does not support reference audio inputs/); + const attempt = requireAttempt(result, 0); + expect(attempt.provider).toBe("openai"); + expect(attempt.error).toMatch(/does not support reference audio inputs/); }); it("forwards mixed image, video, and audio references when explicitly supported", async () => { @@ -498,8 +512,9 @@ describe("video-generation runtime", () => { expect(result.provider).toBe("runway"); expect(seenDurationSeconds).toBe(6); expect(result.attempts).toHaveLength(1); - expect(result.attempts[0]?.provider).toBe("openai"); - expect(result.attempts[0]?.error).toMatch(/supports at most 4s per video, 6s requested/); + const attempt = requireAttempt(result, 0); + expect(attempt.provider).toBe("openai"); + expect(attempt.error).toMatch(/supports at most 4s per video, 6s requested/); }); it("fails when every candidate is skipped for exceeding hard duration caps", async () => {