2015-11-12 10 views
5

私は幅と高さの画面を定義するには、このプロパティを使用します。方法で分度器:画面のサイズ

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

onPrepare()が、このコードはいくつかのテストのために、ないそれらのすべてのための機能です。何故ですか?私はテストで画面のサイズを再定義しません。

よろしく、

ジョニー

編集: ノードの私のバージョンは2.5.1 Protactorと0.10.33です。

分度器の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、SauceLabsを搭載したSafariを試しましたが、それは同じ問題です。

+1

あなたが合格と不合格仕様の例を提供してもらえますか?これらのテストでは、ウィンドウサイズが変更されるようなものがなければなりません:\。また、1.ノードバージョン2.分度器バージョン3を提供することもできますか?分度器の設定? –

+0

ご意見ありがとうございます。それで、私は私のポストを編集しました! – johnnyevolunium

答えて

1

Chromeのオプションでサイズを調整できますか? 他のすべての宣言を削除することができます。

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

+0

同じ問題ですが、私はこのオプションを知らなかったありがとうございました – johnnyevolunium

2

あなたが実際にsetSize()が呼び出される前でもonPrepare()関数から戻ってきている。

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); 
}, 

あなたが「復帰」を削除、またはその前に、ブラウザのウィンドウサイズを設定する必要がありますどちらか。

またsetSize()によって返された約束を返すことができます - この場合にはprotractorは、テストを実行する前に解決するための約束を待ちます:

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

彼らは今でもこの「機能」documentedあります

onPrepareは、オプションでプロミスを返すことができます。これは、プロトラクターが実行を続行するまで待機します。これは、 の準備に非同期呼び出しが含まれる場合に使用できます。ブラウザ と対話します。そうでなければ、分度器は実行の順序を保証することができず、準備が完了する前に が試験を開始することがあります。

+0

それは、より多くの論理が同じ問題です。書類ありがとうございました。 – johnnyevolunium

0

これは、Mac OS Xプラットフォームで大丈夫です:

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

しかし、それは完璧なソリューションではありません、私は待って、あなたの予告