Angular End-To-End testing ja Protractor, kuvaruutukaappaukset

Olen testaillut Angular-koodia reippaasti Protractorilla, ja taannoin tuli ajankohtaiseksi pohtia miten voi tarkemmin tutkia miksi joku protractor test case epäonnistuu. Tässä muutama vinkki siihen:

Protractoriin voi asentaa kuvaruutukaappaus-ohjelman, näin:

npm install protractor-screenshot-reporter

Sen voi säätää makunsa mukaan ottamaan kuvia aina, tekemään niistä raportin, tai ottamaan vain epäonnistuneista testeistä otoksia, näin:

 

var ScreenShotReporter = require('protractor-screenshot-reporter');

exports.config = {
  // your config here ...

  onPrepare: function() {
    // Add a screenshot reporter and store screenshots to `/tmp/screenshots`:
    jasmine.getEnv().addReporter(new ScreenShotReporter({
       baseDirectory: '/tmp/screenshots',
      takeScreenShotsForSkippedSpecs: true,
      takeScreenShotsOnlyForFailedSpecs: true
   }));
  }
}

Tuo plug-in ottaa kuvia vain testin päätteeksi. Voit myös ottaa omia kaappauksia mistä vaiheista vain, tähän tapaan:

var fs = require('fs');

function writeScreenShot(data, filename) {
 var stream = fs.createWriteStream(filename);
 stream.write(new Buffer(data, 'base64'));
 stream.end();
}

browser.takeScreenshot().then(function(png) {
 writeScreenShot(png, 'exception.png');
});

Jos haluat päästä käsiksi selaimen logeihin, tässä koodia siihen:

browser.manage().logs().get('browser').then(function(browserLogs) {
  // browserLogs is an array of objects with level and message fields
  browserLogs.forEach(function(log) {
    if (log.level.value > 900) { // it's an error log
      console.log('Browser console error!');
      console.log(log.message);
    }
  });
});

Pitäisiko testissä odotella hetki? Onnistuu ProTractorissa, näin:

browser.sleep(5000);

Pitäisikö selain läväyttää koko ruudun kokoiseksi? Onnistuu, näin:

browser.driver.manage().window().maximize();

Näin voit poistaa evästeet – esim. ennen kirjautumista:

 // delete all cookies
 browser.manage().deleteAllCookies();

Kenties hyvä idea kääntää jquery animaatiot pois päältä testauksen ajaksi – välttääksesi viiveitä esim. navigaatiopalkkien esiintulossa tms:

 // disable jQuery animation effects
 browser.driver.executeScript("$.fx.off = true;");

Onko muita hyviä Protractor tai JavaScript e2e-testausvinkkejä?

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s