Files
novalon-website/test-framework/shared/utils/reporting/PerformanceBaseline.ts
T
张翔 4c8714c12d feat: complete system test fixes - 100% pass rate (85/85)
- Fixed all form tests (20/20 passing)
- Fixed all performance tests (35/35 passing)
- Fixed all SEO and accessibility tests (30/30 passing)
- Enhanced test framework with custom reporting
- Added performance baseline tracking
- Improved test reliability and error handling
2026-03-06 19:37:02 +08:00

45 lines
1.3 KiB
TypeScript

import { TestResult, PerformanceMetrics, ComparisonResult } from '../../types/reporting';
export class PerformanceBaseline {
private baseline: Map<string, PerformanceMetrics> = new Map();
calculate(results: TestResult[]): PerformanceBaseline {
results.forEach(result => {
if (result.type === 'performance' && result.metrics) {
this.updateBaseline(result);
}
});
return this;
}
private updateBaseline(result: TestResult): void {
const key = result.name;
const current = this.baseline.get(key);
const metrics = result.metrics as PerformanceMetrics;
if (!current || metrics.loadTime < current.loadTime) {
this.baseline.set(key, metrics);
}
}
compareWithBaseline(metrics: PerformanceMetrics, testName: string): ComparisonResult {
const baseline = this.baseline.get(testName);
if (!baseline) {
return { status: 'no-baseline', difference: 0 };
}
const difference = metrics.loadTime - baseline.loadTime;
const status = difference > 500 ? 'regression' : difference < -500 ? 'improvement' : 'stable';
return { status, difference };
}
getBaseline(testName: string): PerformanceMetrics | undefined {
return this.baseline.get(testName);
}
getAllBaselines(): Map<string, PerformanceMetrics> {
return this.baseline;
}
}