UNPKG

e2ed

Version:

E2E testing framework over Playwright

63 lines (62 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setHeadersAndNavigateToUrl = void 0; const node_async_hooks_1 = require("node:async_hooks"); const internal_1 = require("../constants/internal"); const step_1 = require("../step"); const useContext_1 = require("../useContext"); const asserts_1 = require("../utils/asserts"); const config_1 = require("../utils/config"); const generalLog_1 = require("../utils/generalLog"); const headers_1 = require("../utils/headers"); const navigateToUrl_1 = require("./navigateToUrl"); /** * Navigates to the `url` and map custom response and request headers. */ const setHeadersAndNavigateToUrl = async (url, { mapRequestHeaders, mapResponseHeaders, skipLogs = false }, navigateToUrlOptions) => { let navigationReturn; const timeout = navigateToUrlOptions?.timeout ?? (0, config_1.getFullPackConfig)().navigationTimeout; await (0, step_1.step)(`Navigate to ${url} and map headers`, async () => { let requestHeaders; let responseHeaders; const page = (0, useContext_1.getPlaywrightPage)(); await page.route(url, node_async_hooks_1.AsyncLocalStorage.bind(async (route) => { if (mapResponseHeaders === undefined) { return route.fallback(); } try { const response = await route.fetch({ timeout }); const headers = response.headers(); (0, headers_1.applyHeadersMapper)(headers, mapResponseHeaders); responseHeaders = headers; return route.fulfill({ headers, response }); } catch (error) { (0, generalLog_1.generalLog)(`Caught an error when fetching route by url "${url}"`, { error: String(error), }); return route.fallback(); } }), { times: 1 }); if (mapRequestHeaders !== undefined) { await page.route(url, node_async_hooks_1.AsyncLocalStorage.bind(async (route, request) => { const headers = request.headers(); (0, headers_1.applyHeadersMapper)(headers, mapRequestHeaders); requestHeaders = headers; await route.fallback({ headers }); }), { times: 1 }); } navigationReturn = await (0, navigateToUrl_1.navigateToUrl)(url, { skipLogs: true, ...navigateToUrlOptions }); return { requestHeaders, responseHeaders }; }, { skipLogs, timeout: timeout + internal_1.ADDITIONAL_STEP_TIMEOUT, type: 5 /* LogEventType.InternalAction */, }); (0, asserts_1.assertValueIsDefined)(navigationReturn, 'navigationReturn is defined', { navigateToUrlOptions, url, }); return navigationReturn; }; exports.setHeadersAndNavigateToUrl = setHeadersAndNavigateToUrl;