每次测试运行赛普拉斯后如何执行mochaReport.js(合并mochawesome报告)

时间:2020-05-28 23:16:14

标签: report cypress mochawesome

我已经定义了mergeReport.js,并且从package.json作为脚本执行,并且工作正常。

挑战:程序包随着时间的推移而增长,package.json变得繁琐,有多个脚本。我一直在寻找可以在每次执行spec文件后自动运行/触发(mergeReport.js)脚本的方法,而不管结果如何-运行失败/通过状态

仅供参考:在合并每个json / xml文件的报告之前,我会为每次执行生成xml和json报告

const junitReportMerger = require("junit-report-merger");
const marge = require("mochawesome-report-generator");
const mochawesomeMerge = require("mochawesome-merge");
const path = require("path");
const { readdirSync } = require("fs");

const reportDir = "cypress-tests-reports";
const mochawesomeReportJsonFolder = path.join(reportDir, "json");
const junitXmlSourceFolder = path.join(reportDir, "xml");
const junitXmlReportPath = path.join(reportDir, "TESTS-TestSuites.xml");

const mergeJsonReports = async () => {
  const report = await mochawesomeMerge.merge({ reportDir: mochawesomeReportJsonFolder })
  return marge.create(report, {
    reportFilename: "index.html",
    reportDir: reportDir,
  });
}

const mergeXmlReports = async () => {
  const junitXmlFiles = readdirSync(junitXmlSourceFolder)
    .map(fileName => path.join(junitXmlSourceFolder, fileName));
  return new Promise((resolve, reject) => {
    junitReportMerger.mergeFiles(junitXmlReportPath, junitXmlFiles, {}, err => {
      if (err) reject(err);
      resolve();
    });
  })
}

const mergeReports = async () => {
  console.log("Merging cypress spec reports...");
  await mergeJsonReports();
  await mergeXmlReports();
}

mergeReports();

我已经尝试了赛普拉斯活动:test:after:runCypress.on(test:after:run)并运行cy.exec(npm run mergeReports.js)

但是我发现很多时候运行的最后一个规范文件并不总是报告的一部分。

有人知道每次触发此运行的更好的方法,以便我们能够将报告与所有必需的运行信息正确合并。

0 个答案:

没有答案
相关问题