From 3c03d41f135fcc9910a88794af1b3761ede39461 Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Tue, 14 Apr 2026 21:16:48 -0400 Subject: [PATCH] QA: split Matrix scenario leaf types --- .../qa-matrix/src/runners/contract/runtime.ts | 2 +- .../src/runners/contract/scenario-runtime.ts | 2 +- .../src/runners/contract/scenario-types.ts | 51 ++++++++++++++++ .../src/runners/contract/scenarios.ts | 61 ++++--------------- 4 files changed, 64 insertions(+), 52 deletions(-) create mode 100644 extensions/qa-matrix/src/runners/contract/scenario-types.ts diff --git a/extensions/qa-matrix/src/runners/contract/runtime.ts b/extensions/qa-matrix/src/runners/contract/runtime.ts index 86517b09dba..afd0faf050c 100644 --- a/extensions/qa-matrix/src/runners/contract/runtime.ts +++ b/extensions/qa-matrix/src/runners/contract/runtime.ts @@ -107,7 +107,7 @@ type MatrixQaArtifactPaths = { summary: string; }; -function countMatrixQaStatuses(entries: T[]) { +function countMatrixQaStatuses(entries: T[]) { return { failed: entries.filter((entry) => entry.status === "fail").length, passed: entries.filter((entry) => entry.status === "pass").length, diff --git a/extensions/qa-matrix/src/runners/contract/scenario-runtime.ts b/extensions/qa-matrix/src/runners/contract/scenario-runtime.ts index 83c8bdacb29..c593d954829 100644 --- a/extensions/qa-matrix/src/runners/contract/scenario-runtime.ts +++ b/extensions/qa-matrix/src/runners/contract/scenario-runtime.ts @@ -14,7 +14,7 @@ import type { MatrixQaCanaryArtifact, MatrixQaReplyArtifact, MatrixQaScenarioExecution, -} from "./scenarios.js"; +} from "./scenario-types.js"; type MatrixQaActorId = "driver" | "observer"; diff --git a/extensions/qa-matrix/src/runners/contract/scenario-types.ts b/extensions/qa-matrix/src/runners/contract/scenario-types.ts new file mode 100644 index 00000000000..dd22e1bd992 --- /dev/null +++ b/extensions/qa-matrix/src/runners/contract/scenario-types.ts @@ -0,0 +1,51 @@ +import type { MatrixQaObservedEvent } from "../../substrate/events.js"; + +export type MatrixQaReplyArtifact = { + bodyPreview?: string; + eventId: string; + mentions?: MatrixQaObservedEvent["mentions"]; + relatesTo?: MatrixQaObservedEvent["relatesTo"]; + sender?: string; + tokenMatched?: boolean; +}; + +export type MatrixQaCanaryArtifact = { + driverEventId: string; + reply: MatrixQaReplyArtifact; + token: string; +}; + +export type MatrixQaScenarioArtifacts = { + actorUserId?: string; + driverEventId?: string; + expectedNoReplyWindowMs?: number; + reactionEmoji?: string; + reactionEventId?: string; + reactionTargetEventId?: string; + reply?: MatrixQaReplyArtifact; + recoveredDriverEventId?: string; + recoveredReply?: MatrixQaReplyArtifact; + roomKey?: string; + restartSignal?: string; + rootEventId?: string; + threadDriverEventId?: string; + threadReply?: MatrixQaReplyArtifact; + threadRootEventId?: string; + threadToken?: string; + token?: string; + topLevelDriverEventId?: string; + topLevelReply?: MatrixQaReplyArtifact; + topLevelToken?: string; + triggerBody?: string; + membershipJoinEventId?: string; + membershipLeaveEventId?: string; + noticeBodyPreview?: string; + noticeEventId?: string; + transportInterruption?: string; + joinedRoomId?: string; +}; + +export type MatrixQaScenarioExecution = { + artifacts?: MatrixQaScenarioArtifacts; + details: string; +}; diff --git a/extensions/qa-matrix/src/runners/contract/scenarios.ts b/extensions/qa-matrix/src/runners/contract/scenarios.ts index 68fff045236..6431897c8ba 100644 --- a/extensions/qa-matrix/src/runners/contract/scenarios.ts +++ b/extensions/qa-matrix/src/runners/contract/scenarios.ts @@ -1,4 +1,3 @@ -import type { MatrixQaObservedEvent } from "../../substrate/events.js"; import { MATRIX_QA_DRIVER_DM_ROOM_KEY, MATRIX_QA_DRIVER_DM_SHARED_ROOM_KEY, @@ -23,6 +22,12 @@ import { type MatrixQaScenarioContext, type MatrixQaSyncState, } from "./scenario-runtime.js"; +import type { + MatrixQaCanaryArtifact, + MatrixQaReplyArtifact, + MatrixQaScenarioArtifacts, + MatrixQaScenarioExecution, +} from "./scenario-types.js"; export type { MatrixQaScenarioDefinition, MatrixQaScenarioId }; export { @@ -37,55 +42,11 @@ export { runMatrixQaCanary, runMatrixQaScenario, }; - -export type MatrixQaReplyArtifact = { - bodyPreview?: string; - eventId: string; - mentions?: MatrixQaObservedEvent["mentions"]; - relatesTo?: MatrixQaObservedEvent["relatesTo"]; - sender?: string; - tokenMatched?: boolean; -}; - -export type MatrixQaCanaryArtifact = { - driverEventId: string; - reply: MatrixQaReplyArtifact; - token: string; -}; - -export type MatrixQaScenarioArtifacts = { - actorUserId?: string; - driverEventId?: string; - expectedNoReplyWindowMs?: number; - reactionEmoji?: string; - reactionEventId?: string; - reactionTargetEventId?: string; - reply?: MatrixQaReplyArtifact; - recoveredDriverEventId?: string; - recoveredReply?: MatrixQaReplyArtifact; - roomKey?: string; - restartSignal?: string; - rootEventId?: string; - threadDriverEventId?: string; - threadReply?: MatrixQaReplyArtifact; - threadRootEventId?: string; - threadToken?: string; - token?: string; - topLevelDriverEventId?: string; - topLevelReply?: MatrixQaReplyArtifact; - topLevelToken?: string; - triggerBody?: string; - membershipJoinEventId?: string; - membershipLeaveEventId?: string; - noticeBodyPreview?: string; - noticeEventId?: string; - transportInterruption?: string; - joinedRoomId?: string; -}; - -export type MatrixQaScenarioExecution = { - artifacts?: MatrixQaScenarioArtifacts; - details: string; +export type { + MatrixQaCanaryArtifact, + MatrixQaReplyArtifact, + MatrixQaScenarioArtifacts, + MatrixQaScenarioExecution, }; export type { MatrixQaScenarioContext, MatrixQaSyncState };