2016-01-12 7 views
11

इस कोड को मेरी protractor कॉन्फ़िग फ़ाइल में पूरी तरह से काम करता है ... सिवाय इसके कि onComplete में html फ़ाइल निर्माण हमेशा एक्सएमएल ही कॉन्फ़िग फ़ाइल के onPrepare समारोह में बनाई गई फ़ाइल पिछले परीक्षण रन से junitresults xml फ़ाइल के बजाय का उपयोग करता है। तो एचटीएमएल पेज हमेशा एचटीएमएल पेज दावों पर प्रदर्शित टाइमस्टैम्प के पीछे एक परीक्षण परीक्षण दिखा रहा है।मेरी एचटीएमएल टेस्ट रिपोर्ट हमेशा एक एक्सएमएल फ़ाइल क्यों पीछे है?

एक सरल उदाहरण है कि अगर मैं परीक्षण परिणाम फ़ोल्डर में पिछले परीक्षण से कोई xml फ़ाइल के साथ शुरू, एचटीएमएल जनरेटर पाता कोई xml फ़ाइल पर सभी से एक HTML फ़ाइल के निर्माण के लिए है, और इसलिए कोई html उत्पन्न करता है फ़ाइल। लेकिन नया एक्सएमएल फ़ाइल दिखाता है कि अभी भी बनाया गया है, फ़ोल्डर में गिरा दिया गया है, और पूरी तरह से अनदेखा किया गया है ... अगले परीक्षण तक।

क्या आप मुझे 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."); 
}, 

उत्तर

5

यह सब समय के बारे में है। JUnitXmlReporterjasmine-reportersjasmineDone कॉलबैक (source) पर एक एक्सएमएल फ़ाइल को आउटपुट लिखता है, जो onComplete के बाद होता है।

कोशिश करने वाली पहली चीजें या onCleanup पर onComplete के बजाय स्विच करने के लिए होनी चाहिए। ध्यान दें कि browser ऑब्जेक्ट इन विधियों में उपलब्ध नहीं होगा और आपको कॉलबैक के बीच चर साझा करने के अन्य तरीकों की आवश्यकता होगी। यह भी देखें:


तुम भी एक custom reporter जोड़ सकते हैं, 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

संबंधित मुद्दे