最初のjunitresults.xmlをベースフォルダーにダンプし、コードを無視してそれをreportPathフォルダーに入れることを除いて、これのすべての部分が機能しています。
onComplete 関数は、node_module で使用するグローバル変数に問題なくアクセスできます。(ただし、onPrepareはそこにファイルを配置していないため、レポートパスフォルダーにテスト用のjunitresults.xmlファイルを人工的に植える必要があります)。
onPrepare の関数は、同じ onPrepare 内で設定されたグローバル変数を完全に無視しているようです。それらにアクセスするにはどうすればよいですか?アクセスするために別の非グローバル変数を作成しようとしましたが、それも無視しています。助けてください!ありがとう!
...
multiCapabilities: [
{ browserName: 'firefox' },
{ browserName: 'chrome' }
],
onPrepare: function() {
var capsPromise = browser.getCapabilities();
capsPromise.then(function(caps) {
global.browserName = caps.caps_.browserName.replace(/ /g,"-");
global.browserVersion = caps.caps_.version;
// browserName = global.browserName; // was just testing if not-global would work
global.reportPath = 'c:/QA/test-results/' + global.browserName + '/';
});
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: global.reportPath,
filePrefix: 'junitresults'
}));
return global.browserName, global.browserVersion, global.reportPath;
},
onComplete: function() {
var HTMLReport = require('jasmine-xml2html-converter');
// Call custom report for html output
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: reportPath,
seleniumServer: 'default',
applicationUrl: browser.baseUrl,
testBrowser: global.browserName + ' v.' + global.browserVersion
};
new HTMLReport().from(reportPath + 'junitresults.xml', testConfig);
console.log("... aaaannnnd... done.");
},