@wdio/devtools-service
Version:
A WebdriverIO service that allows you to run Chrome DevTools commands in your tests
60 lines • 2.04 kB
TypeScript
import { EventEmitter } from 'node:events';
import type { Protocol } from 'devtools-protocol';
import type { TraceEvent } from '@tracerbench/trace-event';
import type { HTTPRequest } from 'puppeteer-core/lib/esm/puppeteer/api/HTTPRequest.js';
import type { CDPSession } from 'puppeteer-core/lib/esm/puppeteer/api/CDPSession.js';
import type { Page } from 'puppeteer-core/lib/esm/puppeteer/api/Page.js';
import type { GathererDriver } from '../types.js';
export interface Trace {
traceEvents: TraceEvent[];
frameId?: string;
loaderId?: string;
pageUrl?: string;
traceStart?: number;
traceEnd?: number;
}
export interface WaitPromise {
promise: Promise<any>;
cancel: Function;
}
export default class TraceGatherer extends EventEmitter {
private _session;
private _page;
private _driver;
private _failingFrameLoadIds;
private _pageLoadDetected;
private _networkListeners;
private _frameId?;
private _loaderId?;
private _pageUrl?;
private _networkStatusMonitor;
private _networkMonitor;
private _protocolSession;
private _trace?;
private _traceStart?;
private _clickTraceTimeout?;
private _waitConditionPromises;
constructor(_session: CDPSession, _page: Page, _driver: GathererDriver);
startTracing(url: string): Promise<void>;
/**
* store frame id of frames that are being traced
*/
onFrameNavigated(msgObj: Protocol.Page.FrameNavigatedEvent): Promise<void>;
/**
* once the page load event has fired, we can grab some performance
* metrics and timing
*/
onLoadEventFired(): Promise<void>;
onFrameLoadFail(request: HTTPRequest): void;
get isTracing(): boolean;
/**
* once tracing has finished capture trace logs into memory
*/
completeTracing(): Promise<void>;
/**
* clear tracing states and emit tracingFinished
*/
finishTracing(): void;
waitForMaxTimeout(maxWaitForLoadedMs?: number): Promise<() => Promise<void>>;
}
//# sourceMappingURL=trace.d.ts.map