page-with
Version:
A library for usage example-driven in-browser testing of your own libraries.
37 lines (36 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createRequestUtil = void 0;
const uuid_1 = require("uuid");
const headers_polyfill_1 = require("headers-polyfill");
function createRequestUtil(page, server) {
return (url, init, predicate) => {
var _a;
const requestId = (0, uuid_1.v4)();
const resolvedUrl = url.startsWith('/')
? new URL(url, (_a = server.connectionInfo) === null || _a === void 0 ? void 0 : _a.url).toString()
: url;
const fetchOptions = init || {};
const initialHeaders = fetchOptions.headers || {};
const requestHeaders = new headers_polyfill_1.Headers(initialHeaders);
const identityHeaderName = 'accept-language';
requestHeaders.set(identityHeaderName, requestId);
const resolvedInit = Object.assign({}, fetchOptions, {
headers: (0, headers_polyfill_1.headersToObject)(requestHeaders),
});
page.evaluate(([url, init]) => fetch(url, init), [
resolvedUrl,
resolvedInit,
]);
const defaultResponsePredicate = (res) => {
const requestHeaders = res.request().headers();
return requestHeaders[identityHeaderName] === requestId;
};
return page.waitForResponse((res) => {
return predicate
? predicate(res, resolvedUrl)
: defaultResponsePredicate(res);
});
};
}
exports.createRequestUtil = createRequestUtil;