e2ed
Version:
E2E testing framework over Playwright
41 lines (40 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderHead = void 0;
const client_1 = require("../client");
const getContentFromRenderedElement_1 = require("../getContentFromRenderedElement");
const getCspHash_1 = require("../getCspHash");
const renderFavicon_1 = require("./renderFavicon");
const renderScript_1 = require("./renderScript");
const renderStyle_1 = require("./renderStyle");
/**
* Renders tag `<head>`.
* @internal
*/
const renderHead = (reportFileName, imgCspHosts) => {
const renderedScript = (0, renderScript_1.renderScript)();
const renderedStyle = (0, renderStyle_1.renderStyle)();
const scriptContent = (0, getContentFromRenderedElement_1.getContentFromRenderedElement)(renderedScript);
const styleContent = (0, getContentFromRenderedElement_1.getContentFromRenderedElement)(renderedStyle);
const cspScriptHash = (0, getCspHash_1.getCspHash)(scriptContent);
const cspStyleHash = (0, getCspHash_1.getCspHash)(styleContent);
const cspContent = [
"default-src 'self';",
`img-src 'self' data: ${imgCspHosts};`,
`script-src '${cspScriptHash}';`,
`style-src '${cspStyleHash}';`,
];
const safeCspContent = (0, client_1.createSafeHtmlWithoutSanitize) `${cspContent.join(' ')}`;
return (0, client_1.sanitizeHtml) `
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="${reportFileName}" />
<meta http-equiv="Content-Security-Policy" content="${safeCspContent}" />
<title>${reportFileName}</title>
${(0, renderFavicon_1.renderFavicon)()}
${renderedStyle}
${renderedScript}
</head>`;
};
exports.renderHead = renderHead;