@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
76 lines • 5.67 kB
JavaScript
import Interception from './index.js';
import { ERROR_REASON } from '../../constants.js';
/**
* Network interception class based on a WebDriver compliant endpoint.
* Instead of directly using the CDP with Puppeteer this version of the
* class uses a WebDriver extension to trigger the same behavior on a
* compliant backend.
*/
export default class WebDriverInterception extends Interception {
mockId;
async init() {
if (this.url instanceof RegExp) {
throw new Error('Regular Expressions as mock url are not supported');
}
const { mockId } = await this.browser.mockRequest(this.url, this.filterOptions);
this.mockId = mockId;
}
on() {
throw new Error('Not implemented');
// eslint-disable-next-line no-unreachable
return this;
}
/**
* allows access to all requests made with given pattern
*/
get calls() {
return this.browser.call(() => this.browser.getMockCalls(this.mockId));
}
/**
* Resets all information stored in the `mock.calls` set.
*/
clear() {
return this.browser.call(async () => this.browser.clearMockCalls(this.mockId));
}
/**
* Does everything that `mock.clear()` does, and also
* removes any mocked return values or implementations.
*/
async restore() {
await this.browser.call(async () => this.browser.clearMockCalls(this.mockId, true));
}
/**
* Always respond with same overwrite
* @param {*} overwrites payload to overwrite the response
* @param {*} params additional respond parameters to overwrite
*/
respond(overwrite, params = {}) {
return this.browser.call(async () => this.browser.respondMock(this.mockId, { overwrite, params, sticky: true }));
}
/**
* Respond request once with given overwrite
* @param {*} overwrites payload to overwrite the response
* @param {*} params additional respond parameters to overwrite
*/
respondOnce(overwrite, params = {}) {
return this.browser.call(async () => this.browser.respondMock(this.mockId, { overwrite, params }));
}
/**
* Abort the request with an error code
* @param {string} errorCode error code of the response
*/
abort(errorReason, sticky = true) {
if (typeof errorReason !== 'string' || !ERROR_REASON.includes(errorReason)) {
throw new Error(`Invalid value for errorReason, allowed are: ${ERROR_REASON.join(', ')}`);
}
return this.browser.call(async () => this.browser.respondMock(this.mockId, { errorReason, sticky }));
}
/**
* Abort the request once with an error code
* @param {string} errorReason error code of the response
*/
abortOnce(errorReason) {
return this.abort(errorReason, false);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViZHJpdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ludGVyY2VwdGlvbi93ZWJkcml2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUdqRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUMzRCxNQUFNLENBQVM7SUFFZixLQUFLLENBQUMsSUFBSTtRQUNOLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxNQUFNLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUE7UUFDeEUsQ0FBQztRQUNELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxFQUFFO1FBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBRWxDLDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFnQixDQUNsRCxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDcEIsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1QsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDbkIsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFFLFNBQXdCLEVBQUUsU0FBNkIsRUFBRTtRQUM5RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNwQixLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUNoQyxJQUFJLENBQUMsTUFBZ0IsRUFDckIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDdEMsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUUsU0FBd0IsRUFBRSxTQUE2QixFQUFFO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3BCLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQ2hDLElBQUksQ0FBQyxNQUFnQixFQUNyQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FDeEIsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBRSxXQUFtQixFQUFFLFNBQWtCLElBQUk7UUFDOUMsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDN0YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3BCLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQ2hDLElBQUksQ0FBQyxNQUFnQixFQUNyQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FDMUIsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBRSxXQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDSiJ9