webdriverio
Version:
Next-gen browser and mobile automation test framework for Node.js
44 lines • 1.62 kB
TypeScript
import type { local } from 'webdriver';
export type Phase = 'beforeRequestSent' | 'responseStarted';
export type NetworkEvent = local.NetworkBeforeRequestSentParameters | local.NetworkResponseStartedParameters;
/**
* What one mock wants to do with a blocked request in one phase.
*/
export interface Decision {
/**
* `defer` lets the request through now and answers the response later
*/
kind: 'answer' | 'defer' | 'pass';
/**
* a tab or parallel-test mock
*/
scoped: boolean;
/**
* registration order, older = smaller
*/
age: number;
/**
* the BiDi call of this mock, which takes its once entry and calls `answeredEarly` before an early answer
*/
run(answeredEarly: () => void): Promise<unknown>;
/**
* emits `continue`, or keeps an abort for the response, and can log the Firefox warning; sends no BiDi call
*/
lose(winner: Decision): void;
}
export interface Candidate {
readonly age: number;
readonly interceptId: string;
observe(phase: Phase, event: NetworkEvent): void;
complete(event: local.NetworkResponseCompletedParameters): Promise<void>;
decide(phase: Phase, event: NetworkEvent): Decision | undefined | Promise<Decision | undefined>;
}
export declare function rank(a: Decision, b: Decision): number;
export declare function arbiterOf(browser: WebdriverIO.Browser): RequestArbiter;
export declare class RequestArbiter {
#private;
constructor(browser: WebdriverIO.Browser);
add(candidate: Candidate): void;
remove(candidate: Candidate): void;
}
//# sourceMappingURL=arbiter.d.ts.map