playwright-performance-reporter
Version:
Measure and publish performance metrics from browser dev-tools when running playwright
98 lines (97 loc) • 2.69 kB
TypeScript
import type CDP from 'chrome-remote-interface';
import { type ChromiumMetricObserver, type Metric, type ObserverOptions } from '../../../types/index.js';
/**
* Options for the NetworkActivityObserver
*/
export type NetworkActivityObserverOptions = ObserverOptions & {
/**
* When true, sampling returns full details array. When false (default), only aggregated values.
*/
includeDetailsInSampling?: boolean;
};
/**
* Network activity data for a single request
*/
export type NetworkActivity = {
requestId: string;
url: string;
method: string;
status?: number;
transferSize?: number;
duration?: number;
timestamp: number;
};
/**
* Aggregated network metrics
*/
export type NetworkAggregatedMetrics = {
totalNetworkRequests: number;
totalNetworkTransferSize: number;
totalNetworkDuration: number;
};
/**
* Network activity observer result
*/
export type NetworkActivityResult = NetworkAggregatedMetrics & {
networkActivities: NetworkActivity[];
};
export declare class NetworkActivityObserver implements ChromiumMetricObserver {
protected options?: NetworkActivityObserverOptions | undefined;
readonly name = "networkActivity";
readonly plugins: import("../../../index.js").ChromiumMeasurePlugin[];
private readonly includeDetailsInSampling;
private readonly requestStartTimes;
private readonly requestMethods;
private readonly networkActivities;
private readonly subscriptions;
private isEnabled;
constructor(options?: NetworkActivityObserverOptions | undefined);
/**
* @inheritdoc
*/
onStart(accumulator: Metric, developmentTools: CDP.Client): Promise<void>;
/**
* @inheritdoc
*/
onSampling(accumulator: Metric, developmentTools: CDP.Client): Promise<void>;
/**
* @inheritdoc
*/
onStop(accumulator: Metric, developmentTools: CDP.Client): Promise<void>;
/**
* Common function for all lifecycle hooks
*/
private common;
/**
* Setup network event listeners
*/
private setupListeners;
/**
* Setup requestWillBeSent event listener
*
* @param client
*/
private setupRequestWillBeSent;
/**
* Setup responseReceived event listener
*
* @param client
*/
private setupResponseReceived;
/**
* Setup loadingFinished event listener
*
* @param client
*/
private setupLoadingFinished;
/**
* Setup loadingFailed event listener
*
* @param client
*/
private setupLoadingFailed;
/**
* Calculate aggregated metrics from collected activities
*/
private calculateAggregatedMetrics;
}