From 9d3583bc2ffc38e8f45add5a868305cc7e4ab2bc Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Fri, 10 Apr 2026 21:34:39 +0530 Subject: [PATCH] fix(qa-lab): tighten telegram canary matching --- .../qa-lab/src/telegram-live.runtime.test.ts | 23 +++++++++++++++++++ .../qa-lab/src/telegram-live.runtime.ts | 5 ++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/extensions/qa-lab/src/telegram-live.runtime.test.ts b/extensions/qa-lab/src/telegram-live.runtime.test.ts index e82be6f3848..96e9c8d776f 100644 --- a/extensions/qa-lab/src/telegram-live.runtime.test.ts +++ b/extensions/qa-lab/src/telegram-live.runtime.test.ts @@ -166,6 +166,29 @@ describe("telegram live qa runtime", () => { ).toBe("match"); }); + it("classifies threaded blank sut replies as matches", () => { + expect( + __testing.classifyCanaryReply({ + groupId: "-100123", + sutBotId: 88, + driverMessageId: 55, + message: { + updateId: 3, + messageId: 11, + chatId: -100123, + senderId: 88, + senderIsBot: true, + senderUsername: "sut_bot", + text: "", + replyToMessageId: 55, + timestamp: 1_700_000_002_000, + inlineButtons: [], + mediaKinds: ["photo"], + }, + }), + ).toBe("match"); + }); + it("redacts observed message content by default in artifacts", () => { expect( __testing.buildObservedMessagesArtifact({ diff --git a/extensions/qa-lab/src/telegram-live.runtime.ts b/extensions/qa-lab/src/telegram-live.runtime.ts index a7b8a3ce49e..5b52651452e 100644 --- a/extensions/qa-lab/src/telegram-live.runtime.ts +++ b/extensions/qa-lab/src/telegram-live.runtime.ts @@ -325,7 +325,7 @@ async function flushTelegramUpdates(token: string) { } offset = (updates.at(-1)?.update_id ?? offset) + 1; } - return offset; + throw new Error("timed out after 15000ms draining Telegram updates"); } async function sendGroupMessage(token: string, groupId: string, text: string) { @@ -471,8 +471,7 @@ function classifyCanaryReply(params: { }) { if ( params.message.chatId !== Number(params.groupId) || - params.message.senderId !== params.sutBotId || - !params.message.text.trim() + params.message.senderId !== params.sutBotId ) { return "ignore" as const; }