jest-allure2-reporter
Version:
Idiomatic Jest reporter for Allure Framework
86 lines • 2.98 kB
JavaScript
;
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