const { defineConfig } = require("cypress");
const fs = require("fs");
const preprocessor = require("@badeball/cypress-cucumber-preprocessor");
const browserify = require("@badeball/cypress-cucumber-preprocessor/browserify");
function createReportJsonMeta(results) {
fs.writeFileSync(
"./reports/generated/results.json",
JSON.stringify(
{
browserName: results.browserName,
browserVersion: results.browserVersion,
osName: results.osName,
osVersion: results.osVersion,
nodeVersion: results.config.resolvedNodeVersion,
cypressVersion: results.cypressVersion,
startedTestsAt: results.startedTestsAt,
endedTestsAt: results.endedTestsAt,
},
null,
"\t"
)
);
}
async function setupNodeEvents(on, config) {
await preprocessor.addCucumberPreprocessorPlugin(on, config);
on("file:preprocessor", browserify.default(config));
on("after:run", async (results) => {
if (results) {
createReportJsonMeta(results);
let sourcePath = "./reports/cucumber-json";
let oldExtension = "cucumber.json";
let newExtension =
results.browserName + "." + new Date().getTime() + ".json";
fs.readdir(sourcePath, (err, files) => {
if (err) {
cy.log("Issue in the file reading");
return;
}
files.forEach((file) => {
const oldFilePath = `${sourcePath}/${file}`;
if (file.endsWith(`.${oldExtension}`)) {
const newFilePath = `${sourcePath}/${file.replace(
`.${oldExtension}`,
`.${newExtension}`
)}`;
fs.rename(oldFilePath, newFilePath, (err) => {
if (err) {
cy.log("Issue in the file renaming");
}
});
}
});
});
}
});
return config;
}
module.exports = defineConfig({
e2e: {
specPattern: "cypress/e2e/**/*.feature",
setupNodeEvents,
defaultCommandTimeout: 60000,
pageLoadTimeout: 60000,
video: false,
reporter: "json",
},
});