Skip to content

Commit e510042

Browse files
committed
fix(qa): accept Telegram no-reply timeout details
1 parent ec2d744 commit e510042

2 files changed

Lines changed: 25 additions & 5 deletions

File tree

extensions/qa-lab/src/live-transports/telegram/telegram-live.runtime.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,23 @@ describe("telegram live qa runtime", () => {
333333
);
334334
});
335335

336+
it("recognizes Telegram observation timeouts with retry details", () => {
337+
expect(
338+
testing.isTelegramObservedMessageTimeoutError(
339+
new Error(
340+
"timed out after 8000ms waiting for Telegram message; last polling error: The operation was aborted due to timeout",
341+
),
342+
8000,
343+
),
344+
).toBe(true);
345+
expect(
346+
testing.isTelegramObservedMessageTimeoutError(
347+
new Error("timed out after 9000ms waiting for Telegram message"),
348+
8000,
349+
),
350+
).toBe(false);
351+
});
352+
336353
it("includes mention gating in the Telegram live scenario catalog", () => {
337354
const scenarios = testing.findScenario([
338355
"telegram-help-command",

extensions/qa-lab/src/live-transports/telegram/telegram-live.runtime.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,6 +1283,12 @@ function assertTelegramScenarioReply(params: {
12831283
}
12841284
}
12851285

1286+
function isTelegramObservedMessageTimeoutError(error: unknown, timeoutMs: number) {
1287+
return formatErrorMessage(error).startsWith(
1288+
`timed out after ${timeoutMs}ms waiting for Telegram message`,
1289+
);
1290+
}
1291+
12861292
function resolveTelegramQaScenarioSteps(run: TelegramQaScenarioRun): TelegramQaScenarioStep[] {
12871293
if (run.steps.length === 0) {
12881294
throw new Error("Telegram QA scenario must include at least one step");
@@ -1341,11 +1347,7 @@ async function runTelegramQaScenarioStep(params: {
13411347
sentMessageId: sent.message_id,
13421348
};
13431349
} catch (error) {
1344-
if (
1345-
!params.step.expectReply &&
1346-
formatErrorMessage(error) ===
1347-
`timed out after ${stepTimeoutMs}ms waiting for Telegram message`
1348-
) {
1350+
if (!params.step.expectReply && isTelegramObservedMessageTimeoutError(error, stepTimeoutMs)) {
13491351
return {
13501352
matched: undefined,
13511353
requestStartedAt: new Date(requestStartedAtMs).toISOString(),
@@ -2041,6 +2043,7 @@ export const testing = {
20412043
assertTelegramScenarioReply,
20422044
classifyCanaryReply,
20432045
findScenario,
2046+
isTelegramObservedMessageTimeoutError,
20442047
listTelegramQaScenarioCatalog,
20452048
matchesTelegramScenarioReply,
20462049
normalizeTelegramObservedMessage,

0 commit comments

Comments
 (0)