e2ed
Version:
E2E testing framework over Playwright
63 lines (62 loc) • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderApiStatistics = renderApiStatistics;
const sanitizeHtml_1 = require("../sanitizeHtml");
const renderApiStatisticsItem_1 = require("./renderApiStatisticsItem");
const createSafeHtmlWithoutSanitize = sanitizeHtml_1.createSafeHtmlWithoutSanitize;
const renderApiStatisticsItem = renderApiStatisticsItem_1.renderApiStatisticsItem;
/**
* Renders `ApiStatistics` of one kind (pages, requests or resources).
* This base client function should not use scope variables (except other base functions).
* @internal
*/
function renderApiStatistics({ 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(renderApiStatisticsItem({ count, duration, name: url }));
}
items.push(renderApiStatisticsItem({ count: pageCount, duration: pageDuration, isHeader: true, 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(renderApiStatisticsItem({
count,
duration,
name: `${method} ${url} ${statusCode}`,
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(renderApiStatisticsItem({ count, duration, name: `${url} ${statusCode}`, size }));
}
}
}
return createSafeHtmlWithoutSanitize `<article class="test-details">
<p class="test-details__path"></p>
<h2 class="test-details__title">${header}</h2>
<div role="tabpanel">
<article class="overview">${items.join('')}</article>
</div>
</article>`;
}