e2ed
Version:
E2E testing framework over Playwright
39 lines (38 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Head = void 0;
const client_1 = require("../client");
const getContentFromRenderedElement_1 = require("../getContentFromRenderedElement");
const getCspHash_1 = require("../getCspHash");
const Favicon_1 = require("./Favicon");
const Script_1 = require("./Script");
const Style_1 = require("./Style");
/**
* Renders tag `<head>`.
* @internal
*/
const Head = ({ imgCspHosts, reportFileName }) => {
const renderedScript = jsx.createElement(Script_1.Script, null);
const renderedStyle = jsx.createElement(Style_1.Style, null);
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 = jsx.createElement(client_1.List, { separator: " ", withoutSanitize: cspContent });
return (jsx.createElement("head", null,
jsx.createElement("meta", { charset: "utf-8" }),
jsx.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
jsx.createElement("meta", { name: "description", content: reportFileName }),
jsx.createElement("meta", { "http-equiv": "Content-Security-Policy", content: String(safeCspContent) }),
jsx.createElement("title", null, reportFileName),
jsx.createElement(Favicon_1.Favicon, null),
renderedStyle,
renderedScript));
};
exports.Head = Head;