@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
49 lines • 4.34 kB
JavaScript
import EventEmitter from 'node:events';
import { minimatch } from 'minimatch';
import Timer from '../Timer.js';
export default class Interception extends EventEmitter {
url;
filterOptions;
browser;
respondOverwrites = [];
matches = [];
constructor(url, filterOptions = {}, browser) {
super();
this.url = url;
this.filterOptions = filterOptions;
this.browser = browser;
}
waitForResponse({ timeout = this.browser.options.waitforTimeout, interval = this.browser.options.waitforInterval, timeoutMsg, } = {}) {
/*!
* ensure that timeout and interval are set properly
*/
if (typeof timeout !== 'number') {
timeout = this.browser.options.waitforTimeout;
}
if (typeof interval !== 'number') {
interval = this.browser.options.waitforInterval;
}
/* istanbul ignore next */
const fn = async () => this.calls && (await this.calls).length > 0;
const timer = new Timer(interval, timeout, fn, true);
return this.browser.call(() => timer.catch((e) => {
if (e.message === 'timeout') {
if (typeof timeoutMsg === 'string') {
throw new Error(timeoutMsg);
}
throw new Error(`waitForResponse timed out after ${timeout}ms`);
}
throw new Error(`waitForResponse failed with the following reason: ${(e && e.message) || e}`);
}));
}
static isMatchingRequest(expectedUrl, actualUrl) {
if (typeof expectedUrl === 'string') {
return minimatch(actualUrl, expectedUrl);
}
if (expectedUrl instanceof RegExp) {
return Boolean(actualUrl.match(expectedUrl));
}
throw new Error(`Unexpected type for mock url: ${expectedUrl}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW50ZXJjZXB0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXJDLE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQTtBQU8vQixNQUFNLENBQUMsT0FBTyxPQUFnQixZQUFhLFNBQVEsWUFBWTtJQWtCaEQ7SUFDQTtJQUNBO0lBWFgsaUJBQWlCLEdBS1gsRUFBRSxDQUFBO0lBQ1IsT0FBTyxHQUFjLEVBQUUsQ0FBQTtJQUV2QixZQUNXLEdBQW9CLEVBQ3BCLGdCQUFtQyxFQUFFLEVBQ3JDLE9BQTRCO1FBRW5DLEtBQUssRUFBRSxDQUFBO1FBSkEsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFDcEIsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQXFCO0lBR3ZDLENBQUM7SUFFRCxlQUFlLENBQUUsRUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUM3QyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUMvQyxVQUFVLE1BQ00sRUFBRTtRQUNsQjs7V0FFRztRQUNILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQXdCLENBQUE7UUFDM0QsQ0FBQztRQUVELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQXlCLENBQUE7UUFDN0QsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixNQUFNLEVBQUUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBNEIsQ0FBQTtRQUUvRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzFCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQy9CLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsT0FBTyxJQUFJLENBQUMsQ0FBQTtZQUNuRSxDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDakcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUUsV0FBNEIsRUFBRSxTQUFpQjtRQUNyRSxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sU0FBUyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUM1QyxDQUFDO1FBQ0QsSUFBSSxXQUFXLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQ2hELENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ25FLENBQUM7Q0FDSiJ9