UNPKG

e2ed

Version:

E2E testing framework over Playwright

53 lines (52 loc) 2.54 kB
"use strict"; 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; });