e2ed
Version:
E2E testing framework over Playwright
41 lines (40 loc) • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getResponseFromPlaywrightResponse = void 0;
const internal_1 = require("../../constants/internal");
const getDurationWithUnits_1 = require("../getDurationWithUnits");
const parse_1 = require("../parse");
const getRequestFromPlaywrightRequest_1 = require("./getRequestFromPlaywrightRequest");
/**
* Get response object from the original Playwright response object.
* If `isResponseBodyInJsonFormat` is `true`, then parses body as JSON.
* If `isResponseBodyInJsonFormat` is `false`, then returns body as is.
* If `isResponseBodyInJsonFormat` is `undefined`, then safely tries to parse body as JSON.
* @internal
*/
const getResponseFromPlaywrightResponse = async (playwrightResponse, isResponseBodyInJsonFormat) => {
const playwrightRequest = playwrightResponse.request();
const request = (0, getRequestFromPlaywrightRequest_1.getRequestFromPlaywrightRequest)(playwrightRequest);
let responseBody;
const statusCode = playwrightResponse.status();
if (statusCode >= internal_1.MULTIPLE_CHOICES_STATUS_CODE && statusCode < internal_1.BAD_REQUEST_STATUS_CODE) {
responseBody = '';
}
else if (isResponseBodyInJsonFormat === true) {
responseBody = await playwrightResponse.json().catch(() => '');
}
else {
const responseBodyAsString = await playwrightResponse.text().catch(() => '');
try {
responseBody = (0, parse_1.parseMaybeEmptyValueAsJson)(responseBodyAsString);
}
catch {
responseBody = responseBodyAsString;
}
}
const completionTimeInMs = Date.now();
const duration = (0, getDurationWithUnits_1.getDurationWithUnits)(completionTimeInMs - request.utcTimeInMs);
const responseHeaders = playwrightResponse.headers();
return { completionTimeInMs, duration, request, responseBody, responseHeaders, statusCode };
};
exports.getResponseFromPlaywrightResponse = getResponseFromPlaywrightResponse;