testplane
Version:
Tests framework based on mocha and wdio
53 lines (52 loc) • 2.26 kB
TypeScript
import type { CDPEvent, CDPRequest } from "./types";
import type { Browser } from "../types";
type OnEventMessageFn = (cdpEventMessage: CDPEvent) => unknown;
export declare class CDPConnection {
onEventMessage: OnEventMessageFn | null;
private readonly _cdpWsEndpoint;
private readonly _headers?;
private _onPong;
private _pingInterval;
private _pingSubsequentFails;
private _onConnectionCloseFn;
private _wsConnectionStatus;
private _wsConnection;
private _wsConnectionPromise;
private _requestId;
private _pendingRequests;
private constructor();
/** @description Creates CDPConnection without establishing it */
static create(browser: Browser): Promise<CDPConnection>;
/** @description Tries to establish ws connection with timeout */
private _tryToEstablishWsConnection;
/**
* @description creates ws connection with retries or returns existing one
* @note Concurrent requests with same params produce same ws connection
*/
private _getWsConnection;
/** @description Handles websocket incoming messages, resolving pending requests */
private _onMessage;
/**
* @description Produces connection-"uniq" request ids
* @note Theoretically, it can collide, but given "CDP_MAX_REQUEST_ID" is INT32_MAX, it wont
*/
private _getRequestId;
/** @description establishes ws connection, sends request with timeout and waits for response */
private _tryToSendRequest;
/** @description Performs high-level CDP request with retries and timeouts */
request<T = void>(method: CDPRequest["method"], { params, sessionId }?: Omit<CDPRequest, "id" | "method">): Promise<T>;
private _closeWsConnection;
/**
* @description Tries to re-establish connection after network drops
* @note Silently gives up after failed "CDP_CONNECTION_RETRIES" attempts
*/
private _tryToReconnect;
/** @description Used to abort all pending requests when connection is closed */
private _abortPendingRequests;
/** @description Closes websocket connection, terminating all pending requests */
close(): void;
private _pingHealthCheckStop;
private _isWebSocketActive;
private _pingHealthCheckStart;
}
export {};