@shelex/cypress-allure-plugin
Version:
allure reporting plugin for cypress
66 lines (54 loc) • 1.94 kB
JavaScript
const fs = require('fs');
const allurePropertiesToEnvVars = (envVars) => {
const allurePropertiesPath = 'allure.properties';
if (!fs.existsSync(allurePropertiesPath)) {
return null;
}
const propertiesContent = fs.readFileSync(allurePropertiesPath, {
encoding: 'utf-8'
});
if (!propertiesContent) {
return null;
}
const properties = propertiesContent
.split('\n')
.reduce((properties, record) => {
if (!record) {
return properties;
}
const [key, value] = record.split('=');
// skip if no key or key is commented out
if (!key || key.trim().startsWith('#')) {
return properties;
}
properties[key] = toBooleanMaybe(value);
return properties;
}, {});
const propertyToCypressEnv = new Map([
['allure.results.directory', 'allureResultsPath'],
['allure.link.issue.pattern', 'issuePrefix'],
['allure.link.tms.pattern', 'tmsPrefix'],
['allure.cypress.log.commands', 'allureLogCypress'],
['allure.cypress.log.requests', 'allureAttachRequests'],
['allure.cypress.log.gherkin', 'allureLogGherkin'],
[
'allure.omit.previous.attempt.screenshot',
'allureOmitPreviousAttemptScreenshots'
],
['allure.analytics', 'allureAddAnalyticLabels'],
['allure.clear.skipped', 'allureClearSkippedTests'],
['allure.video.passed', 'allureAddVideoOnPass']
]);
propertyToCypressEnv.forEach((envVariable, name) => {
if (typeof properties[name] !== 'undefined') {
envVars[envVariable] = properties[name];
}
});
};
const toBooleanMaybe = (str) => {
if (str === 'true' || str === 'false') {
return str === 'true';
}
return str;
};
module.exports = { allurePropertiesToEnvVars };