From 7eebee2de0659e1655ff5efa1ad78316f5ac0575 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 25 Mar 2026 22:49:14 +0700 Subject: [PATCH] Fix Claude model catalog CI assertion --- .../src/server/agent/model-catalog.e2e.test.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/server/src/server/agent/model-catalog.e2e.test.ts b/packages/server/src/server/agent/model-catalog.e2e.test.ts index 041ca8549..0b623d2de 100644 --- a/packages/server/src/server/agent/model-catalog.e2e.test.ts +++ b/packages/server/src/server/agent/model-catalog.e2e.test.ts @@ -1,6 +1,7 @@ import { afterEach, beforeEach, describe, expect, test } from "vitest"; import { execFileSync } from "node:child_process"; +import type { AgentModelDefinition } from "../agent-sdk-types.js"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; function isBinaryInstalled(binary: string): boolean { @@ -15,6 +16,16 @@ function isBinaryInstalled(binary: string): boolean { const hasCodex = isBinaryInstalled("codex"); const hasOpenCode = isBinaryInstalled("opencode"); +function modelMatchesFamily( + model: AgentModelDefinition, + family: "sonnet" | "haiku", +): boolean { + const haystacks = [model.id, model.label, model.description ?? ""].map((value) => + value.toLowerCase(), + ); + return haystacks.some((text) => text.includes(family)); +} + describe("provider model catalogs (e2e)", () => { let ctx: DaemonTestContext; @@ -32,11 +43,8 @@ describe("provider model catalogs (e2e)", () => { expect(result.error).toBeNull(); expect(result.models.length).toBeGreaterThan(0); - const descriptions = result.models.map((model) => - `${model.label} ${model.description ?? ""}`.toLowerCase(), - ); - expect(descriptions.some((text) => text.includes("sonnet 4.5"))).toBe(true); - expect(descriptions.some((text) => text.includes("haiku"))).toBe(true); + expect(result.models.some((model) => modelMatchesFamily(model, "sonnet"))).toBe(true); + expect(result.models.some((model) => modelMatchesFamily(model, "haiku"))).toBe(true); }, 180_000); test.runIf(hasCodex)(