Подтвердить что ты не робот

Почему в моем тестовом отчете 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.");
},
4b9b3361

Ответ 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.