@allurereport/plugin-classic
Version:
The classic version of Allure HTML report
42 lines (41 loc) • 1.36 kB
JavaScript
const productDefects = {
name: "Product defects",
matchedStatuses: ["failed"],
};
const testDefects = {
name: "Test defects",
matchedStatuses: ["broken"],
};
export const matchCategories = (categories, result) => {
const matched = categories.filter((category) => categoryMatch(category, result));
if (matched.length === 0 && categoryMatch(productDefects, result)) {
matched.push(productDefects);
}
if (matched.length === 0 && categoryMatch(testDefects, result)) {
matched.push(testDefects);
}
return matched;
};
const categoryMatch = (category, result) => {
const { status, statusMessage, statusTrace, flaky } = result;
const matchesStatus = !category.matchedStatuses || category.matchedStatuses.length === 0 || category.matchedStatuses.includes(status);
const matchesMessage = match(category.messageRegex, statusMessage);
const matchesTrace = match(category.traceRegex, statusTrace);
const matchesFlaky = (category.flaky ?? flaky) === flaky;
return matchesStatus && matchesMessage && matchesTrace && matchesFlaky;
};
const match = (regex, value) => {
if (!regex) {
return true;
}
if (!value) {
return false;
}
try {
const b = new RegExp(regex, "s").test(value);
return b;
}
catch (ignored) {
return false;
}
};