2016-01-12 21 views
11

Bu kod ... mükemmel çalışıyor onComplete içinde html dosya oluşturma hep önceki yapılan test sırasında junitresults xml dosya yerine aynı yapılandırma dosyasının onPrepare işlevinde oluşturulan xml dosyası kullanması dışında. Bu yüzden, html sayfası, her zaman, test sonuçlarının html sayfasında görüntülenen zaman damgasının arkasında çalışan bir test sonucunu gösterir.HTML test raporum neden her zaman bir XML dosyası arkasında? Benim <code>protractor</code> yapılandırma dosyasında

yalın bir örnek ben test sonuçları klasöründe bir önceki testte hiçbir xml dosyası ile başlarsak, html jeneratör gelen bir html dosyası oluşturmak için tüm hiçbir xml dosyası bulduğu ve bu nedenle hiçbir html üretir dosya. Ancak yeni xml dosyası hala oluşturuluyor, klasöre düşüyor ve bir sonraki test çalışmasına kadar tamamen yok sayılıyor.

Bir xml dosyası oluşturmak ve sonra html dosyası oluşturmak için xml dosyasını kullanmak için kullanmak için sınamama yardımcı olabilir misiniz?

Teşekkürler!

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."); 
}, 

cevap

5

Bu, zamanlamayla ilgilidir.jasmine-reporters, onComplete'dan sonra gerçekleşen jasmineDone geri aramadaki (source) bir XML dosyasına çıktıyı yazar.

onComplete yerine, ilk olarak afterLaunch veya onCleanup'a geçiş yapmalısınız. browser nesnesinin bu yöntemlerde kullanılamayacağını unutmayın ve geridönüşler arasındaki değişkenleri paylaşmanın başka yollarına ihtiyacınız olacaktır. Ayrıca bakınız:

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."); 
    } 
}); 

Diğer bir seçenek, bir HTML rapor oluşturmak için olacaktır:


Ayrıca jasmineDone geri arama sağlayan bir custom reporter ekleyebilir doğrudan, örneğin,aracılığıyla.