auto-OrangeHRM / node_modules / multiple-cucumber-html-reporter / examples / cypress / cypress.config.js
cypress.config.js
Raw
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",
  },
});