e2ed
Version:
E2E testing framework over Playwright
57 lines (56 loc) • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiStatistics = void 0;
const ApiStatisticsItem_1 = require("./ApiStatisticsItem");
const List_1 = require("./List");
const ApiStatisticsItem = ApiStatisticsItem_1.ApiStatisticsItem;
const List = List_1.List;
/**
* Renders `ApiStatistics` of one kind (pages, requests or resources).
* This base client function should not use scope variables (except other base functions).
* @internal
*/
const ApiStatistics = ({ apiStatistics, hash }) => {
let header;
const items = [];
if (hash === 'api-statistics-pages') {
header = 'Pages';
for (const [name, byUrl] of Object.entries(apiStatistics.pages)) {
let pageCount = 0;
let pageDuration = 0;
const pageItems = [];
for (const [url, { count, duration }] of Object.entries(byUrl)) {
pageCount += count;
pageDuration += duration;
pageItems.push(jsx.createElement(ApiStatisticsItem, { count: count, duration: duration, name: url, url: url }));
}
items.push(jsx.createElement(ApiStatisticsItem, { count: pageCount, duration: pageDuration, isHeader: true, name: name }));
items.push(...pageItems);
}
}
else if (hash === 'api-statistics-requests') {
header = 'Requests';
for (const [url, byMethod] of Object.entries(apiStatistics.requests)) {
for (const [method, byStatusCode] of Object.entries(byMethod)) {
// eslint-disable-next-line max-depth
for (const [statusCode, { count, duration, size }] of Object.entries(byStatusCode)) {
items.push(jsx.createElement(ApiStatisticsItem, { count: count, duration: duration, name: `${method} ${url} ${statusCode}`, size: size }));
}
}
}
}
else {
header = 'Resources';
for (const [url, byStatusCode] of Object.entries(apiStatistics.resources)) {
for (const [statusCode, { count, duration, size }] of Object.entries(byStatusCode)) {
items.push(jsx.createElement(ApiStatisticsItem, { count: count, duration: duration, name: `${url} ${statusCode}`, size: size, url: url }));
}
}
}
return (jsx.createElement("article", { class: "test-details" },
jsx.createElement("p", { class: "test-details__path" }),
jsx.createElement("h2", { class: "test-details__title" }, header),
jsx.createElement("ol", { class: "steps-group" },
jsx.createElement(List, { elements: items }))));
};
exports.ApiStatistics = ApiStatistics;