Files
iptvnator/apps/electron-backend-e2e/src/performance/xtream-renderer-probe-contract.ts
T
4gray a2fafcfc08 test(performance): add end-to-end Xtream benchmark harness (#1300)
* docs(performance): plan Xtream benchmark

* feat(xtream-mock-server): add deterministic 100k fixture

* style(xtream-mock-server): apply repository formatting

* fix(xtream-mock-server): harden performance fixture data

* feat(xtream-mock-server): add performance control plane

* docs(performance): correct Xtream capture plan

* fix(xtream-mock-server): harden performance controls

* fix(xtream-mock-server): harden control lifecycle

* feat(performance): add Xtream preload markers

* feat(performance): trace Xtream main phases

* feat(performance): mark Xtream store publications

* feat(performance): trace Xtream database phases

* feat(performance): trace Xtream delete cancellation

* feat(performance): capture Xtream phase attribution

* feat(performance): mark Sources Xtream refresh

* test(performance): define Xtream benchmark evidence contracts

* test(performance): add Xtream benchmark runner

* test(performance): surface failure evidence writes

* test(performance): align database read clock

* test(performance): preserve capture failure contracts
2026-07-28 08:08:07 +02:00

44 lines
1.6 KiB
TypeScript

import type { RendererPerformancePhaseEvent } from '@iptvnator/shared/logging';
import type { XtreamScenarioId } from './xtream-benchmark-contract';
export const XTREAM_RENDERER_STATE_KEY = '__iptvnatorXtreamRendererCapture';
export const XTREAM_RENDERER_STOPPED_KEY =
'__iptvnatorXtreamRendererCaptureStopped';
export interface XtreamRendererDbEvent {
readonly current: number | null;
readonly epochMs: number;
readonly increment: number | null;
readonly operation: string;
readonly operationId: string | null;
readonly phase: string | null;
readonly playlistId: string | null;
readonly status: string;
readonly total: number | null;
}
export interface XtreamRendererProbeMetrics {
readonly cancelEligibleProgressEpochMs: number | null;
readonly cancellationClickEpochMs: number | null;
readonly dbCancellationTerminalEpochMs: number | null;
readonly dbOperationEvents: readonly XtreamRendererDbEvent[];
readonly domReadyEpochMs: number | null;
readonly frameGapsMs: readonly number[];
readonly heartbeatDelaysMs: readonly number[];
readonly invalidReason: string | null;
readonly longTasksMs: readonly number[];
readonly operationStartEpochMs: number;
readonly performancePhaseEvents: readonly RendererPerformancePhaseEvent[];
readonly routeReadyEpochMs: number | null;
readonly scenarioId: XtreamScenarioId;
readonly storeTerminalEpochMs: number | null;
readonly terminalEpochMs: number | null;
readonly uiPaintedEpochMs: number | null;
}
export interface XtreamRendererProbeOptions {
readonly scenarioId: XtreamScenarioId;
readonly sourceTitle: string;
}