/** * E2E Test Runner - Base Reporter * * Abstract base class for all reporters with event handlers */ import type { ReporterConfig, ReporterEvent, TestSuiteResult, TestExecutionResult, PhaseResult, StepResult, TestSuite, TestPhase, UnifiedTestDefinition } from '../types'; /** * Reporter options interface */ export interface ReporterOptions { output?: string; verbose?: boolean; noColor?: boolean; prettyPrint?: boolean; } /** * Event data types for type-safe event handling */ export interface SuiteStartData { suite: TestSuite; totalTests: number; timestamp: Date; } export interface SuiteEndData { result: TestSuiteResult; timestamp: Date; } export interface TestStartData { test: UnifiedTestDefinition; index: number; total: number; timestamp: Date; } export interface TestEndData { test: UnifiedTestDefinition; result: TestExecutionResult; index: number; total: number; timestamp: Date; } export interface PhaseStartData { testName: string; phase: TestPhase; timestamp: Date; } export interface PhaseEndData { testName: string; phase: TestPhase; result: PhaseResult; timestamp: Date; } export interface StepStartData { testName: string; phase: TestPhase; stepId: string; action: string; adapter: string; timestamp: Date; } export interface StepEndData { testName: string; phase: TestPhase; stepId: string; result: StepResult; timestamp: Date; } /** * Abstract base class for E2E test reporters */ export declare abstract class BaseReporter { protected config: ReporterConfig; protected options: ReporterOptions; constructor(config: ReporterConfig, options?: ReporterOptions); /** * Get the reporter name for identification */ abstract get name(): string; /** * Called when test suite starts */ onSuiteStart(data: SuiteStartData): void; /** * Called when test suite ends */ onSuiteEnd(data: SuiteEndData): void; /** * Called when a test starts */ onTestStart(data: TestStartData): void; /** * Called when a test ends */ onTestEnd(data: TestEndData): void; /** * Called when a phase starts */ onPhaseStart(data: PhaseStartData): void; /** * Called when a phase ends */ onPhaseEnd(data: PhaseEndData): void; /** * Called when a step starts */ onStepStart(data: StepStartData): void; /** * Called when a step ends */ onStepEnd(data: StepEndData): void; /** * Generate the final report */ abstract generateReport(result: TestSuiteResult): Promise; /** * Handle reporter events (generic event dispatcher) */ handleEvent(event: ReporterEvent): void; /** * Get the output path for this reporter */ protected getOutputPath(): string | undefined; /** * Check if verbose mode is enabled */ protected isVerbose(): boolean; /** * Format duration in human-readable format */ protected formatDuration(ms: number): string; /** * Format timestamp in ISO format */ protected formatTimestamp(date: Date): string; /** * Get error message and stack from an error */ protected formatError(error: Error | undefined): { message: string; stack?: string; }; /** * Calculate summary statistics from results */ protected calculateSummary(result: TestSuiteResult): { total: number; passed: number; failed: number; skipped: number; passRate: number; duration: string; }; } /** * Helper to emit reporter events */ export declare function createReporterEvent(type: ReporterEvent['type'], data: unknown): ReporterEvent; //# sourceMappingURL=base.reporter.d.ts.map