UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

49 lines 4.34 kB
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