2015-11-12 56 views
5

的大小我用這個屬性來定義寬度和高度的屏幕:量角器:屏幕

var width = 1280; 
var height = 600; 
browser.driver.manage().window().setSize(width, height); 

在方法onPrepare(),但是這個代碼是對於一些測試,而不是爲所有這些功能。這是爲什麼?我沒有在我的測試中重新定義屏幕的大小。

問候,

約翰尼

編輯: 我節點的版本0.10.33與Protactor 2.5.1。

量角器的conf:

// Fichier de configuration pour Angular 

exports.config = { 
    sauceUser: "", 
    sauceKey: "", 

    capabilities: { 
     'browserName': 'chrome', 
     'name': 'Protractor Circle CI' 
    }, 

    specs: ["src/Bg/*Bundle/Tests/Angular/*Test.js"], 
    exclude: ['src/Bg/*Bundle/Tests/Angular/*AuthTest.js', 'src/Bg/*Bundle/Tests/Angular/*RapideTest.js'], 

    baseUrl: "http://bluegrey.circle.dev:8080/app_ci.php", 

    onPrepare: function() { 
     browser.driver.get('http://bluegrey.circle.dev:8080/app_ci.php/fr_FR/login'); 

     browser.driver.findElement(by.id('username')).sendKeys('[email protected]'); 
     browser.driver.findElement(by.id('password')).sendKeys('userpass'); 
     browser.driver.findElement(by.id('_submit')).click(); 

     return browser.driver.wait(function() { 
      return browser.driver.getCurrentUrl().then(function(url) { 
       return /dashboard/.test(url); 
      }); 
     }, 600000); 

     var width = 1280; 
     var height = 600; 
     browser.driver.manage().window().setSize(width, height); 
    }, 

    jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeoutInterval: 30000 
    } 
}; 

其中工程試驗的例子:

describe("Carrière > Centre d'interêt", function() { 
    describe("Tests d'ajout et de suppression d'un centre d'interêt", function() { 
     beforeEach(function() { 
      // on compte le nombre d'element 
      elements = element.all(by.css('.bloc__defaut')); 
      elements.count().then(function (nbElementP) { 
       nbElement = nbElementP; 
      }); 
     }, 60000); 

     it('GET /app_ci.php/fr_FR/dashboard/career/interest', function() { 

      browser.get('/app_ci.php/fr_FR/dashboard/career/interest'); 
     }, 60000); 

     it("Ajout du centre d'interêt", function() { 


      // On clique sur ajouter 
      element(by.css('.btn-add-js')).click(); 

      // On remplit le formulaire 
      browser.findElement(by.id('CentreInteret_intitule')).sendKeys('CentreInteret_intitule'); 
      element(by.css('.u-btn-inverse')).click(); 

      // on re-compte le nombre d'element 
      expect(elements.count()).toEqual(nbElement+1); 
     }, 60000); 

     it("Suppression d'un centre d'interêt", function() { 

      // On regarde si toutes les fenetres de suppressions sont cachés au début 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

      // On clique sur supprimer 
      element(by.css('.u-btn-alert')).click(); 

      // On regarde si la fenetre de confirmation de suppression est présente 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeTruthy(); 

      // On clique sur supprimer 
      element(by.css('.btn-supprimer-js')).click(); 

      // On regarde si l'element est caché 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

     }, 60000); 
    }); 
}); 

和失敗的測試:

describe('Carrière > Experience Pro', function() { 
    describe("Tests d'ajout et de suppression d'une experience pro", function() { 
     beforeEach(function() { 
      // on compte le nombre d'element 
      elements = element.all(by.css('.bloc__defaut')); 
      elements.count().then(function (nbElementP) { 
       nbElement = nbElementP; 
      }); 
     }, 60000); 

     it('GET /app_ci.php/fr_FR/dashboard/career/professionalexperiences', function() { 

      browser.get('/app_ci.php/fr_FR/dashboard/career/professionalexperiences'); 
     }, 60000); 

     it('Vérification si lors du clique de la checkbox le champs date se désactive', function() { 
      // On clique sur ajouter 
      element(by.css('.btn-add-js')).click(); 

      // On regarde si par defaut les champs ne sont pas désactivés (= active) 
      expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeFalsy(); 

      // On clique 
      element(by.id('ExperiencePro_enPosteajout')).click(); 

      // On regarde si les champs sont desactivés 
      expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeTruthy(); 

      // On regarde s'ils se redésactive 
      element(by.id('ExperiencePro_enPosteajout')).click(); 
      expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeFalsy(); 
     }, 120000); 

     it("Réglage du format de date", function() { 


      // Format mois/année 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_1')).click(); 
      expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy(); 

      // Format année 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_2')).click(); 
      expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy(); 

      // Format année 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_0')).click(); 
      expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy(); 


     }, 60000); 

     it("Ajout de l'experience", function() { 


      // On remplit le formulaire 
      browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_day option[value="1"]')).click(); 
      browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_month option[value="12"]')).click(); 
      browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_year option[value="2000"]')).click(); 
      element(by.id('ExperiencePro_enPosteajout')).click(); 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_0')).click(); 
      browser.findElement(by.id('ExperiencePro_poste-ajout')).sendKeys('ExperiencePro_poste'); 
      browser.findElement(by.id('ExperiencePro_entreprise')).sendKeys('ExperiencePro_entreprise'); 
      browser.findElement(by.id('ExperiencePro_ville')).sendKeys('ExperiencePro_ville'); 

      element(by.css('.u-btn-inverse')).click(); 

      // on re-compte le nombre d'element 
      expect(elements.count()).toEqual(nbElement+1); 
     }, 60000); 

     it("Suppression d'une experience", function() { 

      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

      // On clique sur supprimer 
      element(by.css('.u-btn-alert')).click(); 

      // On regarde si la fenetre de confirmation de suppression est présente 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeTruthy(); 

      // On clique sur supprimer 
      element(by.css('.btn-supprimer-js')).click(); 

      // On regarde si la fenetre affirmant la suppression est apparue 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

     }, 60000); 
    }); 
}); 

編輯2: 這可能是視口的問題而不是屏幕尺寸的問題。我嘗試了Chrome,Firefox,Safari和SauceLabs,這也是同樣的問題。

+1

你能提供一個合格的例子和失敗的規範呢?在那些導致窗口大小改變的測試中必定會有一些事情發生:\。你還可以提供你的1.節點版本2.量角器版本3。量角器配置? –

+0

謝謝您的評論。因此,我編輯了我的帖子! – johnnyevolunium

回答

1

您可以嘗試通過Chrome選項控制設置大小嗎? 您可以刪除所有其他設置大小的聲明。

'browserName': 'chrome', 'chromeOptions' : { args: ['--window-size=Width,Height'] },

+0

同樣的問題,但謝謝你,我不知道這個選項 – johnnyevolunium

2

你實際上是從onPrepare()功能甚至setSize()纔回到正所謂:

onPrepare: function() { 
    browser.driver.get('http://bluegrey.circle.dev:8080/app_ci.php/fr_FR/login'); 

    browser.driver.findElement(by.id('username')).sendKeys('[email protected]'); 
    browser.driver.findElement(by.id('password')).sendKeys('userpass'); 
    browser.driver.findElement(by.id('_submit')).click(); 

    // HERE!! 
    return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return /dashboard/.test(url); 
     }); 
    }, 600000); 

    var width = 1280; 
    var height = 600; 
    browser.driver.manage().window().setSize(width, height); 
}, 

您應該刪除「回報」,或之前將其設置瀏覽器窗口大小。

return browser.driver.manage().window().setSize(width, height); 

他們現在連這個「功能」 documented: -

您也可以返回一個承諾通過setSize()返回在這種情況下protractor將等待承諾執行測試之前解決

onPrepare可以選擇性地返回一個承諾,在繼續執行之前,量角器將等待。如果 準備涉及任何異步呼叫,例如與 瀏覽器進行交互。否則量角器不能保證執行順序,並且在準備完成之前可以開始測試。

+0

好吧,這是更多的邏輯,但同樣的問題。感謝您的文檔。 – johnnyevolunium

0

它的確定與Mac OS X平臺:

capabilities: { 
    'browserName': 'chrome', 
    'platform': 'OS X 10.11', 
    'name': 'Protractor Circle CI' 
}, 

但它不是一個完美的解決方案,我等待您的通知