2015-04-30 8 views
25

Ich habe die intermittierenden Timeouts erlebt, die in der FAQ von Protractor für die Verwendung von $ timeout for polling (AKA: Das waitForAngular Timeout) verantwortlich gemacht werden. Ich frage mich, ob es auch in den Fällen fehlschlägt, in denen nicht abgefragt wird. Für mein Team kommt es besser zur Geltung, da wir uns auf die Komponenten des Angular Materials verlassen. Sie sind stark auf Animationsinteraktionen mit konstanter Verwendung von $ timeout (func, 0). Diese Frage ähnelt issue #29966301, konzentriert sich jedoch auf ein mögliches Problem zwischen Winkelmaterial und Winkelmesser. Ich bin wirklich interessiert zu wissen, wie Leute, die Angular Material und Winkelmesser verwenden, mit solchen Problemen umgehen, wenn sie überhaupt auf sie stoßen.Gibt es Probleme bei der Verwendung von Winkelmaterial mit Winkelmesser für E2E-Tests?

Der interessante Punkt ist, dass ich weder im Winkelmesser noch im Angular Material github-Seiten eine Nutzung der Fähigkeiten anderer gesehen habe. Da es sich bei beiden um Angular-Bibliotheken handelt, die von der gleichen Gruppe in Google stammen, können @juliemr und die Protractor-Gruppe mit @ThomasBurleson und der Materialgruppe sprechen, um umfassende Use Cases und E2E-Tests für Angular Material mit Protractor zu entwickeln .

+0

Nicht genau und beantworten, aber wenn es um Animationen geht, habe ich explizit explizite Wartezeiten mit den erwarteten Bedingungen verwendet (http://stackoverflow.com/a/29151849/771848). – alecxe

+0

Ich habe tatsächlich angefangen, EC überall zu verwenden. Es hat das Auftreten solcher Probleme reduziert, aber sie treten immer noch zeitweise auf. –

+0

Können Sie ein konkretes Beispiel geben? (Ein Ausschnitt des HTML und des Tests, bei dem Probleme auftreten?) –

Antwort

1

Nun Winkelmesser ist so konzipiert, Winkel zu testen, so dass, wenn Sie verwenden waitForAngular Funktion und Ihre Website ist kantig Sie nicht, dass verwenden soll, sollten Sie die folgenden before Test machen:

browser.ignoreSynchronization = false; 

und Sie können dies tun, dazu beitragen, Ihre Tests schneller und wahrscheinlich das Timeout Problem zu entfernen, auf dem Transporteur-conf.js Datei diesen Code hinzu:

...

onPrepare: function() { 
    var disableNgAnimate = function() { 
     angular.module('disableNgAnimate', []).run(function($animate){ 
      $animate.enabled(false); 
     });  
    }, 
    browser.addMockModule('disableNgAnimate', disableNgAnimate); 
}, 

...

und vielleicht sollten Sie dies überprüfen video heraus.

+1

ignoreSynchronization scheint die Tests massiv zu vermasseln, da es so aussieht, als ob es vom Protractor-Team verwendet werden würde. Ich habe die Animationen deaktiviert und trotzdem kann der Test sporadisch nicht auf Angular warten. Es passiert, ob ich es in direkter Verbindung oder durch Selenium führe. –

1

Ich würde hinzufügen, dass die Deaktivierung ngAnimate möglicherweise nicht genug ist. Möglicherweise müssen Sie auch die CSS-Animation von Angular Material deaktivieren, indem Sie CSS in die Option "onPrepare" des Winkelmessers einfügen. (How to disable animations in protractor for angular js application).

+0

können Sie Beschreibung in Ihrer Antwort hinzufügen, mit Link. – Vikrant

+0

Nicht sicher, ich verstehe Ihren Kommentar. Meinst du, ich sollte den Inhalt des Links dort drüben kopieren/zitieren? – dhwang

Verwandte Themen