From cd5076770e56393de12787564bcf31eb0c8e019e Mon Sep 17 00:00:00 2001 From: Josh Lehman Date: Sat, 15 Aug 2026 09:27:39 -0700 Subject: [PATCH] fix(qa): restore Buzz canary selection (#124200) * oc-2f4: fix Buzz QA scenario selection * oc-2f4: align canary catalog contract --- .../shared/scenario-selection.test.ts | 19 ++++++++++++++++++- .../src/scenario-catalog-channels.test.ts | 4 ++-- qa/scenarios/channels/channel-canary.yaml | 2 ++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/extensions/qa-lab/src/live-transports/shared/scenario-selection.test.ts b/extensions/qa-lab/src/live-transports/shared/scenario-selection.test.ts index 85ae5e08c5e5..58db609027a3 100644 --- a/extensions/qa-lab/src/live-transports/shared/scenario-selection.test.ts +++ b/extensions/qa-lab/src/live-transports/shared/scenario-selection.test.ts @@ -156,6 +156,23 @@ describe("live transport QA scenario selection", () => { }, ); + it.each([ + { + channelId: "buzz", + scenarioIds: ["channel-canary", "channel-mention-gating"], + }, + { channelId: "msteams", scenarioIds: ["channel-canary"] }, + ])("keeps the $channelId plugin defaults eligible", ({ channelId, scenarioIds }) => { + expect( + resolveCatalogLiveTransportQaScenarioIds({ + ...MOCK_LANE, + channelId, + channelDriver: "live", + scenarioIds, + }), + ).toEqual(scenarioIds); + }); + it("rejects the shared channel canary on unsupported Discord drivers", () => { expect(() => resolveCatalogLiveTransportQaScenarioIds({ @@ -165,7 +182,7 @@ describe("live transport QA scenario selection", () => { scenarioIds: ["channel-canary"], }), ).toThrow( - "selected QA scenario(s) do not match the current QA lane: channel-canary (channel=qa-channel|telegram)", + "selected QA scenario(s) do not match the current QA lane: channel-canary (channel=qa-channel|telegram|buzz|msteams)", ); }); }); diff --git a/extensions/qa-lab/src/scenario-catalog-channels.test.ts b/extensions/qa-lab/src/scenario-catalog-channels.test.ts index a079bb8831f8..92236ca9e8b4 100644 --- a/extensions/qa-lab/src/scenario-catalog-channels.test.ts +++ b/extensions/qa-lab/src/scenario-catalog-channels.test.ts @@ -230,10 +230,10 @@ describe("qa scenario catalog channel contracts", () => { expect(scenario.gatewayConfigPatch).not.toHaveProperty("channels.telegram.groups"); }); - it("keeps the shared channel canary eligible for QA Channel and Telegram", () => { + it("keeps the shared channel canary eligible for its supported channels", () => { const scenario = requireFlowScenario(readQaScenarioById("channel-canary")); - expect(scenario.execution.channels).toEqual(["qa-channel", "telegram"]); + expect(scenario.execution.channels).toEqual(["qa-channel", "telegram", "buzz", "msteams"]); }); it("keeps transcript-role delivery on the Crabline driver", () => { diff --git a/qa/scenarios/channels/channel-canary.yaml b/qa/scenarios/channels/channel-canary.yaml index 2f49c4e2afd5..433ac781aa5a 100644 --- a/qa/scenarios/channels/channel-canary.yaml +++ b/qa/scenarios/channels/channel-canary.yaml @@ -24,6 +24,8 @@ scenario: channels: - qa-channel - telegram + - buzz + - msteams summary: Run the shared channel canary through QA Channel, Crabline, or a live adapter. transportPolicy: requireGroupMention: true