e2ed
Version:
E2E testing framework over Playwright
38 lines (37 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setHeadersAndNavigateToUrl = void 0;
const node_async_hooks_1 = require("node:async_hooks");
const useContext_1 = require("../useContext");
const config_1 = require("../utils/config");
const headers_1 = require("../utils/headers");
const log_1 = require("../utils/log");
const navigateToUrl_1 = require("./navigateToUrl");
/**
* Navigate to the url and map custom response and request headers.
*/
const setHeadersAndNavigateToUrl = async (url, options, navigateToUrlOptions) => {
const { mapRequestHeaders, mapResponseHeaders } = options;
const page = (0, useContext_1.getPlaywrightPage)();
await page.route(url, node_async_hooks_1.AsyncLocalStorage.bind(async (route) => {
if (mapResponseHeaders === undefined) {
return route.fallback();
}
const timeout = navigateToUrlOptions?.timeout ?? (0, config_1.getFullPackConfig)().navigationTimeout;
const response = await route.fetch({ timeout });
const headers = response.headers();
(0, headers_1.applyHeadersMapper)(headers, mapResponseHeaders);
(0, log_1.log)(`Map response headers for ${url}`, { headers }, 5 /* LogEventType.InternalAction */);
return route.fulfill({ headers, response });
}), { 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);
(0, log_1.log)(`Map request headers for ${url}`, { headers }, 5 /* LogEventType.InternalAction */);
await route.fallback({ headers });
}), { times: 1 });
}
return (0, navigateToUrl_1.navigateToUrl)(url, { skipLogs: true, ...navigateToUrlOptions });
};
exports.setHeadersAndNavigateToUrl = setHeadersAndNavigateToUrl;