Почему в моем тестовом отчете HTML всегда есть один файл XML?
Этот код в моем конфигурационном файле protractor
отлично работает... за исключением того, что создание файла html
в onComplete всегда использует файл junitresults xml
из предыдущего тестового прогона, а не файл xml, созданный в том же config file onPrepare. Таким образом, на странице html всегда отображаются результаты теста, за которыми следует время, отображаемое на странице html page timestamp.
Простая иллюстрация состоит в том, что если я начну с отсутствия файла xml из предыдущего теста в папке результатов теста, генератор html не найдет xml файл вообще для сборки html файла и поэтому не генерирует html файл. Но новый xml файл показывает, что все еще создается, упакован в папку и полностью игнорируется... до следующего тестового прогона.
Можете ли вы помочь мне получить мой тест для создания XML файла, а затем использовать этот файл xml для генерации html файла?
Спасибо!
onPrepare: function() {
var capsPromise = browser.getCapabilities();
capsPromise.then(function(caps) {
browser.browserName = caps.caps_.browserName.replace(/ /g,"-");
browser.browserVersion = caps.caps_.version;
browserName = browser.browserName;
browser.reportPath = 'c:/QA/test-results/' + browser.browserName + '/';
}). then(function(caps) {
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: 'c:/QA/test-results/' + browser.browserName + '/',
filePrefix: 'junitresults'
}));
});
return browser.browserName, browser.browserVersion, browser.reportPath;
},
onComplete: function() {
var HTMLReport = require('jasmine-xml2html-converter');
// Call custom report for html output
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: browser.reportPath,
seleniumServer: 'default',
applicationUrl: browser.baseUrl,
testBrowser: browser.browserName + ' v.' + browser.browserVersion
};
new HTMLReport().from(browser.reportPath + 'junitresults.xml', testConfig);
console.log("... aaaannnnd... done.");
},
Ответы
Ответ 1
Это все о сроках. JUnitXmlReporter
from jasmine-reporters
записывает вывод в файл XML в обратном вызове jasmineDone
(source), который происходит после onComplete
.
Сначала нужно попробовать переключиться на afterLaunch
или onCleanup
вместо onComplete
. Обратите внимание, что объект browser
не будет доступен в этих методах, и вам понадобятся другие способы обмена переменными между обратными вызовами. Также см.:
Вы также можете добавить пользовательский репортер, предоставляя обратный вызов jasmineDone
:
jasmine.getEnv().addReporter({
jasmineDone: function () {
var HTMLReport = require('jasmine-xml2html-converter');
// Call custom report for html output
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: browser.reportPath,
seleniumServer: 'default',
applicationUrl: browser.baseUrl,
testBrowser: browser.browserName + ' v.' + browser.browserVersion
};
new HTMLReport().from(browser.reportPath + 'junitresults.xml', testConfig);
console.log("... aaaannnnd... done.");
}
});
Другой вариант - создать отчет HTML напрямую, например, protractor-jasmine2-html-reporter
.