import type { JsonValue, RunStatus, TestCaseRunStatus, TestSuiteRunStatus } from "@codemation/core"; export interface StartTestSuiteRunRequest { readonly triggerNodeId: string; readonly concurrency?: number; } export interface StartTestSuiteRunResponse { readonly testSuiteRunId: string; readonly status: TestSuiteRunStatus | "running"; } export interface TestSuiteChildRunDto { readonly runId: string; readonly testSuiteRunId: string; readonly testCaseIndex: number; readonly testCaseLabel?: string; readonly status: RunStatus; readonly testCaseStatus?: TestCaseRunStatus; readonly startedAt: string; readonly finishedAt?: string; } export interface TestSuiteRunSummaryDto { readonly id: string; readonly workflowId: string; readonly triggerNodeId: string; readonly triggerNodeName?: string; readonly status: TestSuiteRunStatus | "running"; readonly startedAt: string; readonly finishedAt?: string; readonly totalCases: number; readonly passedCases: number; readonly failedCases: number; } export interface TestSuiteRunDetailDto extends TestSuiteRunSummaryDto { readonly concurrency: number; readonly nodeCoverage?: ReadonlyArray; readonly errorMessage?: string; readonly updatedAt: string; } export interface AssertionMetricTrendPointDto { readonly testSuiteRunId: string; readonly startedAt: string; readonly meanScore: number; readonly sampleCount: number; } export interface AssertionMetricTrendDto { readonly name: string; readonly perSuiteRun: ReadonlyArray; } export interface TestAssertionDto { readonly id: string; readonly runId: string; readonly testSuiteRunId: string; readonly workflowId: string; readonly nodeId: string; readonly iterationId?: string; readonly itemIndex?: number; readonly name: string; readonly score: number; readonly passThreshold?: number; readonly errored?: true; readonly expected?: JsonValue; readonly actual?: JsonValue; readonly message?: string; readonly details?: Readonly>; readonly createdAt: string; }