2015-11-12 17 views
5

używam tę właściwość, aby określić szerokość i wysokość ekranu w:Kątomierz: Rozmiar ekranu

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

w metodzie onPrepare(), ale ten kod działa dla niektórych testów, a nie dla wszystkich z nich. Dlaczego? Nie redefiniuję rozmiaru ekranu w moich testach.

Pozdrawiam,

Johnny

Edit: Moja wersja węzła jest 0.10.33 z Protactor 2.5.1.

kątomierza 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 
    } 
}; 

Przykładem testu, który działa:

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

i testu, który kończy się niepowodzeniem:

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

Edycja 2: To może problemem rzutni za zamiast problemu z rozmiarem ekranu. Próbowałem w Chrome, Firefox, Safari z SauceLabs i to był ten sam problem.

+1

można podać przykład przemijania i wobec braku specyfikacji? W tych testach musi się coś dziać, co powoduje zmianę rozmiaru okna: \. Czy mógłbyś również podać swój 1. Węzeł w wersji 2. Kątomierz w wersji 3.Konfiguracja kątomierza? –

+0

Dziękuję za komentarz. W związku z tym zredagowałem swój post! – johnnyevolunium

Odpowiedz

1

Czy możesz spróbować kontrolować ustawiony rozmiar za pomocą Opcji Chrome? Możesz usunąć wszystkie pozostałe deklaracje o ustawionym rozmiarze.

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

+0

Ten sam problem, ale dziękuję, że nie znałem tej opcji. – johnnyevolunium

2

jesteś rzeczywiście powrocie z funkcji onPrepare() jeszcze przed setSize() nazywa się:

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

należy albo usunąć „powrót” lub ustawić rozmiar okna przeglądarki przed nim.

Można również zwrócić obietnica zwrócony przez setSize() - w tym przypadku protractor byłoby oczekiwać obietnicy zostać rozwiązane przed wykonaniem testów:

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

Oni teraz mają nawet tej „funkcji” documented:

onPrepare może opcjonalnie zwrócić obietnicę, na którą Kątomierz czeka przed kontynuowaniem realizacji. Można go użyć, jeśli przygotowanie obejmuje asynchroniczne połączenia, np. interakcja z przeglądarką . W przeciwnym razie protektor nie może zagwarantować kolejności wykonania, a może rozpocząć testy przed zakończeniem przygotowania.

+0

Dobrze zauważony, to bardziej logiczny, ale ten sam problem. Dziękuję za dokument. – johnnyevolunium

0

Jest ok Mac OS X Platforma:

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

Ale nie jest to idealne rozwiązanie, czekam twój anons

Powiązane problemy