UNPKG

e2ed

Version:

E2E testing framework over Playwright

39 lines (38 loc) 1.87 kB
"use strict"; 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;