2015-12-11 2 views
4

У меня есть следующий тест в жасмин, что мне нужно выполнить для 2 различных URL-адресов, эти 2 URL разные версии одного и того же продукта:Как повторно использовать жасмин тесты

describe('TEST ',function(){ 
    var basePage = new BasePage(); 
    var page1 = new Page1(); 

    describe('TEST',function(){ 

     beforeEach(function(){ 
      browser.get('URL-1.html'); 
     }); 

     it('REUSE THIS TEST' , function(){ 
      browser.wait(EC.visibilityOf(viewerWidgetPage.videoPlayer)); 
      page1.videoControls.click(); 
      expect(basePage.hasClass(page1.videoPlayer, 'vjs-playing')).toBeTruthy(); 
      page1.audioControl.click(); 

      //Verify that the video property is muted. 
      browser.executeAsyncScript_(function(callback){ 
       callback(window.player.muted()); 
      }).then(function(isMuted){ 
       expect(isMuted).toBeFalsy(); 
      }); 

      page1.audioControl.click(); 

      //Verify that the video property is muted. 
      browser.executeAsyncScript_(function(callback){ 
       callback(window.player.muted()); 
      }).then(function(isMuted){ 
       expect(isMuted).toBeTruthy(); 
      }); 


     }); 

    }); 

Есть ли способ, чтобы использовать в другом тесте, «это» «УЛУЧИТЬ ЭТОТ ИСПЫТАНИЕ» каким-либо образом?

ответ

4

Одним из вариантов было бы петлю над URL, испытываемый:

describe('TEST ',function(){ 
    var basePage = new BasePage(); 
    var page1 = new Page1(); 
    var urls = ['URL-1.html', 'URL-2.html']; 

    urls.map(function (url) { 
     describe('TEST ' + url,function(){ 

      beforeEach(function(){ 
       browser.get(url); 
      }); 

      it('REUSE THIS TEST' , function(){ 
       browser.wait(EC.visibilityOf(viewerWidgetPage.videoPlayer)); 
       page1.videoControls.click(); 
       expect(basePage.hasClass(page1.videoPlayer, 'vjs-playing')).toBeTruthy(); 
       page1.audioControl.click(); 

       //Verify that the video property is muted. 
       browser.executeAsyncScript_(function(callback){ 
        callback(window.player.muted()); 
       }).then(function(isMuted){ 
        expect(isMuted).toBeFalsy(); 
       }); 

       page1.audioControl.click(); 

       //Verify that the video property is muted. 
       browser.executeAsyncScript_(function(callback){ 
        callback(window.player.muted()); 
       }).then(function(isMuted){ 
        expect(isMuted).toBeTruthy(); 
       }); 


      }); 
     }); 
    }); 
}); 

Другой подход, который, вероятно, лучше масштабируются, будет использовать multiCapabilities и добавить нужную спецификацию (s) к каждой из возможностей, параметризующих тестируемый url.

Идея заключается в том, чтобы определить параметр на каждой возможности:

multiCapabilities: [ 
    { 
     browserName: "chrome", 
     url: "URL-1.html" 
    }, 
    { 
     browserName: "chrome", 
     url: "URL-2.html" 
    } 
], 

Затем в тестовом использовании getProcessedConfig() для доступа к току и url:

beforeEach(function() { 
    browser.getProcessedConfig().then(function (config) { 
     var url = config.capabilities.url; 
     browser.get(url); 
    }); 
}); 

Испытано - работает для меня ,

Смежные вопросы