У меня mergeReport.js
, как определено ниже, и я выполняю как сценарий из package.json
, и он работает нормально.
Проблема: пакет со временем вырос, а package.json
стал громоздким с несколькими скриптами. Я искал способы, с помощью которых мы можем запускать / запускать (mergeReport.js
) скрипт автоматически после каждого выполнения файла spe c независимо от результата - сбой / проходит состояние запуска
FYI: я генерирую xml и json отчет для каждого моего выполнения перед объединением отчетов для каждого json / xml файла
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();
Я пробовал событие Cypress: test:after:run
как Cypress.on(test:after:run)
и работает cy.exec(npm run mergeReports.js)
Но я много раз находил последний spe c запускаемый файл не всегда является частью отчета.
Кто-нибудь знает лучший способ запускать этот запуск каждый раз, чтобы мы могли правильно объединить отчеты со всей необходимой информацией о запуске.