import type { RunnerTask as Task } from "vitest"; import type { BrowserTraceEntryKind } from "vitest/browser"; import type { SerializedLocator } from "./locators.js"; export interface BrowserTraceData { retry: number; repeats: number; recordCanvas: boolean; entries: BrowserTraceEntry[]; } export type BrowserTraceEntryStatus = "pass" | "fail"; type BrowserTraceEntryRangePhase = "start" | "end"; type BrowserTraceSelectorResolution = "matched" | "missing" | "error"; interface BrowserTraceEntryRange { id: string; phase: BrowserTraceEntryRangePhase; } export interface BrowserTraceEntry { name: string; kind: BrowserTraceEntryKind; range?: BrowserTraceEntryRange; status?: BrowserTraceEntryStatus; startTime: number; duration?: number; stack?: string; location?: { file: string; line: number; column: number; }; element?: SerializedLocator; snapshot: TraceSnapshot; } interface TraceSnapshot { serialized: unknown; viewport: { width: number; height: number; }; scroll: { x: number; y: number; }; selectorId?: number; selectorResolution?: BrowserTraceSelectorResolution; selectorError?: string; pseudoClassIds: Record; } declare const PSEUDO_CLASS_NAMES: readonly [":hover", ":active", ":focus", ":focus-visible", ":focus-within", ":popover-open"]; type PseudoClassName = (typeof PSEUDO_CLASS_NAMES)[number]; export interface BrowserTraceAttempt { retry: number; repeats: number; startTime: number; } export declare function createBrowserTraceRangeId(): string; export declare function recordBrowserTraceEntry(task: Task, options: Omit): Promise; export {};