/** * Regression Detection — Smart regression detection with flaky test handling, * fix suggestions, and PR comment generation. * @module */ import type { SuiteResult } from './types'; import { saveBaseline, loadBaseline, detectRegressions, formatRegressions } from './regression'; import type { Baseline, BaselineEntry, Regression } from './regression'; export { saveBaseline, loadBaseline, detectRegressions, formatRegressions }; export type { Baseline, BaselineEntry, Regression }; export interface SnapshotTestEntry { name: string; passed: boolean; duration_ms: number; cost_usd: number; total_tokens: number; pass_rate: number; attempts: number; } export interface ReportSnapshot { suite_name: string; timestamp: string; tests: SnapshotTestEntry[]; } export interface RegressionThresholds { latency_percent: number; cost_percent: number; pass_rate_drop: number; } export declare const DEFAULT_THRESHOLDS: RegressionThresholds; export interface SnapshotChange { test: string; dimension: 'latency' | 'cost' | 'pass_rate'; severity: 'critical' | 'warning' | 'info'; direction: 'regression' | 'improvement'; baseline_value: number; current_value: number; change_percent: number; message: string; } export interface ComparisonReport { baseline_label: string; current_label: string; regressions: SnapshotChange[]; improvements: SnapshotChange[]; unchanged: string[]; summary: { total_tests: number; regressed: number; improved: number; unchanged: number; }; } export declare function createSnapshot(suite: SuiteResult): ReportSnapshot; export declare function saveSnapshot(snap: ReportSnapshot, filePath: string): void; export declare function loadSnapshot(filePath: string): ReportSnapshot; export declare function compareSnapshots(baseline: ReportSnapshot, current: ReportSnapshot, thresholds?: RegressionThresholds): ComparisonReport; export declare function formatRegressionReport(report: ComparisonReport): string; export interface TestResults { suite: SuiteResult; } export interface DetectorRegressionReport { regressions: Regression[]; newFailures: string[]; flippedTests: string[]; perfDegradations: Regression[]; ignoredFlaky: string[]; summary: string; } export interface Suggestion { test: string; regression: Regression; suggestion: string; } /** * Detect if a test is likely flaky based on history. */ export declare function isFlakyTest(name: string, flakyList: string[]): boolean; /** * Full regression detection with flaky filtering. */ export declare class RegressionDetector { private baseline; private flakyTests; constructor(baseline: Baseline, flakyTests?: string[]); detect(current: SuiteResult): DetectorRegressionReport; suggestFixes(regressions: Regression[]): Suggestion[]; generatePRComment(report: DetectorRegressionReport): string; private suggestForRegression; private buildSummary; } export type TestSnapshot = SnapshotTestEntry; export type RegressionChange = SnapshotChange; export type { ComparisonReport as RegressionReport }; //# sourceMappingURL=regression-detector.d.ts.map