UNPKG

jest-allure2-reporter

Version:
86 lines 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapTestFileDocblock = void 0; exports.mapTestStepDocblock = mapTestStepDocblock; exports.mapTestCaseDocblock = mapTestCaseDocblock; const utils_1 = require("../utils"); const ALL_LABELS = Object.keys(assertType({ epic: 0, feature: 0, owner: 0, package: 0, parentSuite: 0, severity: 0, story: 0, subSuite: 0, suite: 0, tag: 0, testClass: 0, testMethod: 0, thread: 0, })); const isMultiLabel = (name) => name === 'tag'; const asSingle = (value) => (Array.isArray(value) ? value.at(-1) : value); function mapTestStepDocblock({ comments, pragmas, }) { const metadata = {}; if (pragmas?.displayName) { metadata.displayName = asSingle(pragmas.displayName); } else if (comments) { metadata.displayName = comments; } return metadata; } function mapTestCaseDocblock(context) { const metadata = {}; const { comments, pragmas = {} } = context; const labels = ALL_LABELS.flatMap((name) => (0, utils_1.asArray)(pragmas[name]).flatMap(createLabelMapper(name))); if (labels.length > 0) metadata.labels = labels; const links = (0, utils_1.compactArray)([ ...(0, utils_1.asArray)(pragmas.issue).map(issueMapper), ...(0, utils_1.asArray)(pragmas.tms).map(tmsMapper), ...(0, utils_1.asArray)(pragmas.url).map(linkMapper), ]); if (links.length > 0) metadata.links = links; if (comments || pragmas.description) metadata.description = [...(0, utils_1.asArray)(comments), ...(0, utils_1.asArray)(pragmas.description)]; if (pragmas.descriptionHtml) { metadata.descriptionHtml = (0, utils_1.asArray)(pragmas.descriptionHtml); } if (pragmas.historyId) { metadata.historyId = asSingle(pragmas.historyId); } if (pragmas.displayName) { metadata.displayName = asSingle(pragmas.displayName); } if (pragmas.fullName) { metadata.fullName = asSingle(pragmas.fullName); } return metadata; } exports.mapTestFileDocblock = mapTestCaseDocblock; function createLabelMapper(name) { return isMultiLabel(name) ? (line) => commaSplit(line).map((value) => ({ name, value })) : (value) => [{ name, value }]; } function commaSplit(value) { return value.includes(',') ? value.split(/\s*,\s*/) : [value]; } function linkMapper(value) { const nameIndex = value.indexOf(' '); const rawUrl = nameIndex === -1 ? value : value.slice(0, nameIndex); const rawName = nameIndex === -1 ? rawUrl : value.slice(nameIndex + 1); return { url: rawUrl.trim(), name: rawName.trim() }; } function createTypedLinkMapper(type) { return (value) => ({ type, url: '', name: value.trim() }); } const issueMapper = createTypedLinkMapper('issue'); const tmsMapper = createTypedLinkMapper('tms'); function assertType(value) { return value; } //# sourceMappingURL=docblockMapping.js.map