UNPKG

playwright-performance-reporter

Version:

Measure and publish performance metrics from browser dev-tools when running playwright

93 lines (92 loc) 3.02 kB
import type CDP from 'chrome-remote-interface'; import { type MeasurePlugin, type OnSamplingMeasure, type OnStartMeasure, type OnStopMeasure, type ResultAccumulator } from './index.js'; /** * Supported hooks to run measurements on */ export declare const hooks: readonly ["onTest", "onTestStep"]; export type Hooks = typeof hooks[number]; export declare const hookOrder: readonly ["onStart", "onSampling", "onStop"]; export type HookOrder = typeof hookOrder[number]; /** * Common interface to define procedures to observe metrics */ export type MetricObserver<T> = { name: string; plugins: Array<MeasurePlugin<T>>; onStart: OnStartMeasure<T>; onSampling: OnSamplingMeasure<T>; onStop: OnStopMeasure<T>; }; /** * Define which metric should regularly be requested */ export type MetricSampling<T> = { samplingTimeoutInMilliseconds: number; metric: MetricObserver<T>; }; /** * Supported browser dev tool clients */ export type BrowserDeveloperToolsClient = { chromium: CDP.Client; webkit: Record<string, unknown>; firefox: Record<string, unknown>; }; /** * Browsers that have been tested to work with performance metric extraction */ export declare const supportedBrowsers: readonly ["chromium", "webkit", "firefox"]; export type SupportedBrowsers = typeof supportedBrowsers[number]; /** * Chromium specific metric observer and measure plugin */ export type ChromiumMetricObserver = MetricObserver<BrowserDeveloperToolsClient['chromium']>; export type ChromiumMeasurePlugin = MeasurePlugin<BrowserDeveloperToolsClient['chromium']>; /** * Firefox specific metric observer and measure plugin. */ export type FirefoxMetricObserver = MetricObserver<BrowserDeveloperToolsClient['firefox']>; export type FirefoxMeasurePlugin = MeasurePlugin<BrowserDeveloperToolsClient['firefox']>; /** * Webkit specific metric observer and measure plugin. */ export type WebkitMetricObserver = MetricObserver<BrowserDeveloperToolsClient['webkit']>; export type WebkitMeasurePlugin = MeasurePlugin<BrowserDeveloperToolsClient['webkit']>; /** * Options to customize the reporter for a specific browser. */ type BrowserOptions = { [browser in SupportedBrowsers]?: Partial<Record<Hooks, { metrics: Array<MetricObserver<BrowserDeveloperToolsClient[browser]>>; }>> & { sampling?: { metrics: Array<MetricSampling<BrowserDeveloperToolsClient[browser]>>; }; }; }; export type PresenterWriter = { /** * Create new entry of an object * * @param content */ write(content: ResultAccumulator): Promise<boolean>; /** * Finish json stream */ close(): Promise<boolean>; /** * Delete created target */ delete(): Promise<boolean>; }; /** * Customize the reporter with desired browser and (custom) metrics */ export type Options = { deleteOnFailure: boolean; presenters?: PresenterWriter[]; browsers: BrowserOptions; }; export declare const defaultOptions: Options; export {};