Skip to content

Commit 543518b

Browse files
committed
test: accept runtime matrix dm approvals
1 parent 833f1ce commit 543518b

2 files changed

Lines changed: 24 additions & 13 deletions

File tree

extensions/qa-matrix/src/runners/contract/scenario-runtime-approval.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ async function waitForObservedApprovalEvent(params: {
172172
context: MatrixQaScenarioContext;
173173
expectedApprovalId: string;
174174
expectedKind: MatrixQaApprovalKind;
175+
excludedRoomIds?: string[];
175176
roomIds: string[];
176177
timeoutMs: number;
177178
}) {
@@ -183,16 +184,31 @@ async function waitForObservedApprovalEvent(params: {
183184
if (!primaryRoomId) {
184185
throw new Error("Matrix approval wait requires at least one candidate room");
185186
}
186-
const startedAt = Date.now();
187-
while (Date.now() - startedAt < params.timeoutMs) {
188-
const observedMatch = params.context.observedEvents.find((event) =>
187+
const excludedRoomIds = new Set(params.excludedRoomIds ?? []);
188+
const isExpectedObservedApproval = (event: MatrixQaObservedEvent) => {
189+
if (excludedRoomIds.has(event.roomId)) {
190+
return false;
191+
}
192+
if (
189193
roomIds.some((roomId) =>
190194
isExpectedApprovalEvent(event, {
191195
...params,
192196
roomId,
193197
}),
194-
),
198+
)
199+
) {
200+
return true;
201+
}
202+
return (
203+
event.sender === params.context.sutUserId &&
204+
event.type === "m.room.message" &&
205+
event.approval?.kind === params.expectedKind &&
206+
event.approval.id === params.expectedApprovalId
195207
);
208+
};
209+
const startedAt = Date.now();
210+
while (Date.now() - startedAt < params.timeoutMs) {
211+
const observedMatch = params.context.observedEvents.find(isExpectedObservedApproval);
196212
if (observedMatch) {
197213
assertApprovalMetadata({
198214
event: observedMatch,
@@ -209,13 +225,7 @@ async function waitForObservedApprovalEvent(params: {
209225
}
210226
await client.waitForOptionalRoomEvent({
211227
observedEvents: params.context.observedEvents,
212-
predicate: (event) =>
213-
roomIds.some((roomId) =>
214-
isExpectedApprovalEvent(event, {
215-
...params,
216-
roomId,
217-
}),
218-
),
228+
predicate: isExpectedObservedApproval,
219229
roomId: primaryRoomId,
220230
timeoutMs: Math.min(1_000, remainingMs),
221231
});
@@ -674,6 +684,7 @@ export async function runApprovalChannelTargetBothScenario(context: MatrixQaScen
674684
});
675685
const dmApproval = await waitForObservedApprovalEvent({
676686
context,
687+
excludedRoomIds: [context.roomId],
677688
expectedApprovalId: approvalId,
678689
expectedKind: "exec",
679690
roomIds: dmRoomIds,

extensions/qa-matrix/src/runners/contract/scenarios.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ describe("matrix live qa scenarios", () => {
720720
const channelApproval = buildApprovalEvent("$approval-both-channel", "!main:matrix-qa.test");
721721
const dmApproval = buildApprovalEvent(
722722
"$approval-both-dm",
723-
"!driver-shared-dm:matrix-qa.test",
723+
"!driver-runtime-dm:matrix-qa.test",
724724
);
725725
context.observedEvents.push(channelApproval, dmApproval, {
726726
eventId: "$approval-both-option",
@@ -757,7 +757,7 @@ describe("matrix live qa scenarios", () => {
757757
expect(artifacts.approvals?.[0]?.eventId).toBe("$approval-both-channel");
758758
expect(artifacts.approvals?.[0]?.roomId).toBe("!main:matrix-qa.test");
759759
expect(artifacts.approvals?.[1]?.eventId).toBe("$approval-both-dm");
760-
expect(artifacts.approvals?.[1]?.roomId).toBe("!driver-shared-dm:matrix-qa.test");
760+
expect(artifacts.approvals?.[1]?.roomId).toBe("!driver-runtime-dm:matrix-qa.test");
761761

762762
expect(waitForRoomEvent).toHaveBeenCalledTimes(1);
763763
const finalGatewayCall = mockCall(gatewayCall, "gatewayCall", -1);

0 commit comments

Comments
 (0)