


















@@ -21,20 +21,18 @@ describe("buildQaSuiteSummaryJson", () => {
21212222it("records provider/model/mode so parity gates can verify labels", () => {
2323const json = buildQaSuiteSummaryJson(baseParams);
24-expect(json.run).toMatchObject({
25-startedAt: "2026-04-11T00:00:00.000Z",
26-finishedAt: "2026-04-11T00:05:00.000Z",
27-providerMode: "mock-openai",
28-primaryModel: "openai/gpt-5.5",
29-primaryProvider: "openai",
30-primaryModelName: "gpt-5.5",
31-alternateModel: "openai/gpt-5.5-alt",
32-alternateProvider: "openai",
33-alternateModelName: "gpt-5.5-alt",
34-fastMode: true,
35-concurrency: 2,
36-scenarioIds: null,
37-});
24+expect(json.run.startedAt).toBe("2026-04-11T00:00:00.000Z");
25+expect(json.run.finishedAt).toBe("2026-04-11T00:05:00.000Z");
26+expect(json.run.providerMode).toBe("mock-openai");
27+expect(json.run.primaryModel).toBe("openai/gpt-5.5");
28+expect(json.run.primaryProvider).toBe("openai");
29+expect(json.run.primaryModelName).toBe("gpt-5.5");
30+expect(json.run.alternateModel).toBe("openai/gpt-5.5-alt");
31+expect(json.run.alternateProvider).toBe("openai");
32+expect(json.run.alternateModelName).toBe("gpt-5.5-alt");
33+expect(json.run.fastMode).toBe(true);
34+expect(json.run.concurrency).toBe(2);
35+expect(json.run.scenarioIds).toBeNull();
3836});
39374038it("includes scenarioIds in run metadata when provided", () => {
@@ -63,14 +61,12 @@ describe("buildQaSuiteSummaryJson", () => {
6361primaryModel: "anthropic/claude-opus-4-6",
6462alternateModel: "anthropic/claude-sonnet-4-6",
6563});
66-expect(json.run).toMatchObject({
67-primaryModel: "anthropic/claude-opus-4-6",
68-primaryProvider: "anthropic",
69-primaryModelName: "claude-opus-4-6",
70-alternateModel: "anthropic/claude-sonnet-4-6",
71-alternateProvider: "anthropic",
72-alternateModelName: "claude-sonnet-4-6",
73-});
64+expect(json.run.primaryModel).toBe("anthropic/claude-opus-4-6");
65+expect(json.run.primaryProvider).toBe("anthropic");
66+expect(json.run.primaryModelName).toBe("claude-opus-4-6");
67+expect(json.run.alternateModel).toBe("anthropic/claude-sonnet-4-6");
68+expect(json.run.alternateProvider).toBe("anthropic");
69+expect(json.run.alternateModelName).toBe("claude-sonnet-4-6");
7470});
75717672it("leaves split fields null when a model ref is malformed", () => {
@@ -79,14 +75,12 @@ describe("buildQaSuiteSummaryJson", () => {
7975primaryModel: "not-a-real-ref",
8076alternateModel: "",
8177});
82-expect(json.run).toMatchObject({
83-primaryModel: "not-a-real-ref",
84-primaryProvider: null,
85-primaryModelName: null,
86-alternateModel: "",
87-alternateProvider: null,
88-alternateModelName: null,
89-});
78+expect(json.run.primaryModel).toBe("not-a-real-ref");
79+expect(json.run.primaryProvider).toBeNull();
80+expect(json.run.primaryModelName).toBeNull();
81+expect(json.run.alternateModel).toBe("");
82+expect(json.run.alternateProvider).toBeNull();
83+expect(json.run.alternateModelName).toBeNull();
9084});
91859286it("keeps scenarios and counts alongside the run metadata", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。