e2ed
Version:
E2E testing framework over Playwright
53 lines (52 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.waitForRequest = void 0;
const useContext_1 = require("../../useContext");
const config_1 = require("../../utils/config");
const error_1 = require("../../utils/error");
const fn_1 = require("../../utils/fn");
const getDurationWithUnits_1 = require("../../utils/getDurationWithUnits");
const log_1 = require("../../utils/log");
const requestHooks_1 = require("../../utils/requestHooks");
/**
* Waits for some request (from browser) filtered by the request predicate.
* If the function runs longer than the specified timeout, it is rejected.
*/
exports.waitForRequest = (async (predicate, triggerOrOptions, options) => {
const startTimeInMs = Date.now();
(0, fn_1.setCustomInspectOnFunction)(predicate);
const trigger = typeof triggerOrOptions === 'function' ? triggerOrOptions : undefined;
const finalOptions = typeof triggerOrOptions === 'function' ? options : triggerOrOptions;
const timeout = finalOptions?.timeout ?? (0, config_1.getFullPackConfig)().waitForRequestTimeout;
if (trigger !== undefined) {
(0, fn_1.setCustomInspectOnFunction)(trigger);
}
const page = (0, useContext_1.getPlaywrightPage)();
const promise = page
.waitForRequest(async (playwrightRequest) => {
try {
const request = (0, requestHooks_1.getRequestFromPlaywrightRequest)(playwrightRequest);
const result = await predicate(request);
return result;
}
catch (cause) {
throw new error_1.E2edError('waitForRequest predicate threw an exception', {
cause,
timeout,
trigger,
});
}
}, { timeout })
.then((playwrightRequest) => (0, requestHooks_1.getRequestFromPlaywrightRequest)(playwrightRequest));
const timeoutWithUnits = (0, getDurationWithUnits_1.getDurationWithUnits)(timeout);
if (finalOptions?.skipLogs !== true) {
(0, log_1.log)(`Set wait for request with timeout ${timeoutWithUnits}`, { predicate, trigger }, 7 /* LogEventType.InternalCore */);
}
await trigger?.();
const request = await promise;
if (finalOptions?.skipLogs !== true) {
const waitWithUnits = (0, getDurationWithUnits_1.getDurationWithUnits)(Date.now() - startTimeInMs);
(0, log_1.log)(`Have waited for request for ${waitWithUnits}`, { predicate, request, timeoutWithUnits, trigger }, 7 /* LogEventType.InternalCore */);
}
return request;
});