mocha-multiple-sessions-detailed-runner
Version:
High-level API for multi-session Mocha tests with detailed reporting
95 lines (81 loc) • 2.27 kB
text/typescript
import type { BatchProgressData, BatchExecutionResult } from '../core/batch-execution';
import type { SessionMeta, TestStats } from '../core/types';
export type RunnerEventType =
| 'runner:initialized'
| 'runner:session-defined'
| 'runner:batch-started'
| 'runner:batch-progress'
| 'runner:batch-completed'
| 'runner:batch-failed'
| 'runner:report-generated'
| 'runner:combined-report-generated'
| 'runner:cleared'
| 'runner:destroyed'
| 'runner:config-updated';
export interface RunnerEvent {
type: RunnerEventType;
timestamp: Date;
data?: RunnerEventData;
}
export type RunnerEventData =
| InitializedEventData
| SessionDefinedEventData
| BatchStartedEventData
| BatchProgressEventData
| BatchCompletedEventData
| BatchFailedEventData
| ReportGeneratedEventData
| CombinedReportGeneratedEventData
| ClearedEventData
| ConfigUpdatedEventData;
export interface InitializedEventData {
configUsed: any;
sessionCount: number;
timestamp: Date;
}
export interface SessionDefinedEventData {
sessionLabel: string;
sessionMeta: SessionMeta;
totalSessions: number;
}
export interface BatchStartedEventData {
sessionLabels: string[];
totalSessions: number;
executionMode: 'sequential' | 'parallel';
options: any;
}
export interface BatchProgressEventData extends BatchProgressData {
sessionResults?: Record<string, any>;
}
export interface BatchCompletedEventData extends BatchExecutionResult {
// Additional completion data
}
export interface BatchFailedEventData {
error: Error;
completedSessions: string[];
failedSession?: string;
partialResults: Record<string, any>;
}
export interface ReportGeneratedEventData {
reportType: 'session';
sessionLabel: string;
reportSize: number;
generatedAt: Date;
stats: TestStats;
}
export interface CombinedReportGeneratedEventData {
reportType: 'combined';
totalSessions: number;
reportSize: number;
generatedAt: Date;
summary: any;
}
export interface ClearedEventData {
clearedSessions: string[];
clearedReports: string[];
}
export interface ConfigUpdatedEventData {
oldConfig: any;
newConfig: any;
changes: string[];
}