playwright-teamcity-reporter
Version:
Playwright Teamcity Reporter
48 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTestName = exports.writeServiceMessage = exports.escape = exports.stringify = void 0;
const replacer = () => {
const seen = new WeakSet();
return (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return;
}
seen.add(value);
}
return value;
};
};
const stringify = (data, space) => {
return JSON.stringify(data, replacer(), space).replace(/"/g, "'");
};
exports.stringify = stringify;
// Escape text message to be compatible with Teamcity
// https://www.jetbrains.com/help/teamcity/2021.2/service-messages.html#Escaped+values
/* eslint-disable no-control-regex */
const escape = (text) => text
? text
.replace(/\x1B.*?m/g, "")
.replace(/\|/g, "||")
.replace(/\n/g, "|n")
.replace(/\r/g, "|r")
.replace(/\[/g, "|[")
.replace(/\]/g, "|]")
.replace(/\u0085/g, "|x")
.replace(/\u2028/g, "|l")
.replace(/\u2029/g, "|p")
.replace(/'/g, "|'")
: '';
exports.escape = escape;
/* eslint-enable no-control-regex */
const writeServiceMessage = (messageName, parts) => {
const textParts = Object.entries(parts)
.map(([key, value]) => ` ${key}='${(0, exports.escape)(value)}'`)
.join("");
console.log(`##teamcity[${messageName}${textParts}]`);
};
exports.writeServiceMessage = writeServiceMessage;
// https://www.jetbrains.com/help/teamcity/2021.2/service-messages.html#Interpreting+Test+Names
const getTestName = (test) => test.titlePath().filter(title => title).join(": ");
exports.getTestName = getTestName;
//# sourceMappingURL=utils.js.map