2016-11-14 8 views
0

테스트에서 모든 시나리오의 스크린 샷을 모든 브라우저에서 가져오고 싶습니다.테스트 중 인턴 환경에 액세스하여 브라우저 이름을 얻으십시오.

현재 나는 파이어 폭스에 대한 테스트가 실패했지만 크롬이 아니므로 실패를 빨리 볼 수있는 좋은 방법이 필요하므로 스크린 샷 파일 이름에 브라우저 이름 앞에 접두어를 추가하려고합니다.

this.remote.session.capabilities을 통해 기능 개체에 액세스하고 browserName 속성을 가져올 수 있습니다. 그래서 같은이를 사용하지 해요 : 크롬에서 실행중인 경우

bdd.before(function(){ 
     this.remote.setFindTimeout(5000); 
     browser = this.remote.session.capabilities.browserName; 
    }); 

는, 그러나

function saveScreenshot(name, screenshot) { 
    var dir = './screenshots'; 
    if (!fs.existsSync(dir)){ 
     fs.mkdirSync(dir); 
    } 
    fs.writeFileSync(dir + '/' + browser + '_' + name, screenshot) 
}; 

와 결합 파이어 폭스, 난 단지 스크린 샷 firefox_screenshotname.png 이름 얻을 - 아니 크롬!

이 방법이 있습니까?

답변

0

내 자신의 질문에 답하는 - 잘못된 '브라우저'변수를 잘못 정의했습니다. https://theintern.github.io/intern/#interface-object에 따라 테스트에서 수정되거나 (내 경우에는) 사용되는 변수는 테스트 스위트 함수에서 선언해야합니다.

define(function (require) { 
    var bdd = require('intern!bdd'); 
    var expect = require('intern/chai!expect'); 
    var wiremock = require('./wiremock'); 
    var fs = require('intern/dojo/node!fs'); 

    // var browser <- doesn't work here! 

    bdd.describe('some thing', function() { 

     var browser; // Works here! 

     bdd.before(function(){ 
      this.remote.setFindTimeout(5000); 
      browser = this.remote.session.capabilities.browserName; 
     }); 

     bdd.it('should search for a postcode', function() { 
      return this.remote 
       .get(require.toUrl('index.html')) 
       .findAllByCssSelector('.thing') 
       .getVisibleText() 
       .then(function (text) { 
        expect(text).to.contain('Some stuff'); 
       }) 
       .takeScreenshot() 
       .then(function (screenshot) { 
        saveScreenshot("thing.png", screenshot); 
       }); 
     }); 

     function saveScreenshot(name, screenshot) { 
      var dir = './screenshots'; 
      if (!fs.existsSync(dir)){ 
       fs.mkdirSync(dir); 
      } 
      fs.writeFileSync(dir + '/' + browser + '_' + name, screenshot) 
     }; 
    }); 
});