2016-12-22 5 views
13

beenden würde ich Ende-zu-Ende wie testen unsere Winkel 2 Anwendung Protractor, aber ich bin mit der Nachricht hängen geblieben:fehlgeschlagen: Zeitüberschreitung Warten auf asynchrone Angular Aufgaben nach 11 Sekunden

"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds." 

Meine Konf-Datei.

Chrome ist geöffnet, und die Website ist auch geöffnet, dann passiert nichts bis zum Timeout.

Beim Deaktivieren der Synchronisierung (mit browser.ignoreSynchronization = true;) ist es in Ordnung. Aber ich verliere die "automatische Warte" -Funktion, einer der Hauptvorteile der Verwendung von Winkelmesser.

Die Anwendung basiert vollständig auf eckigen 2. Warum funktioniert das nicht?

Unsere Entwickler haben mir gesagt, dass wir nicht pollen (eine der möglichen Ursachen nach Protractor documentation). Wir verwenden übrigens Websocket-Architektur. Ich weiß nicht, ob es einen Link gibt.

Eigentlich weiß ich nicht, wie Sie dieses Problem überhaupt beheben können.

Könnte jemand bitte helfen?

+0

Mögliche Duplikat [Protractor testen eine Bootstrap-modal - nicht Winkelseite - Timeout], um die Standard-Timeout werden überschrieben (http://stackoverflow.com/questions/ 40817733/Winkelmesser-Test-ein-Bootstrap-Modal-nicht-Winkel-Seite-Timeout) –

+0

Können Sie versuchen, unten Lösung und prüfen, ob es funktioniert – AdityaReddy

Antwort

6

Ihre Vermutung ist richtig. Dieser Fehler tritt auf, wenn ausstehende Aufgaben in Ihrer angular2-Anwendung ausgeführt werden.

Ja, der häufigste Grund ist, wenn die Anwendung kontinuierlich $ timeout oder $ http abfragt, wird der Protractor unbegrenzt warten und eine Zeitüberschreitung haben. Dies kann aber auch in Szenarien auftreten, wo App mehr als 11 Sekunden dauert

Bitte beachten here für weitere Informationen über die verschiedenen Timeouts

die Standard-Timeout-Wert 11 Sekunden ist. Sie können dies ändern, indem Sie den folgenden Wert in config.js Einstellung und versuchen und sehen, wenn Sie das Problem weiterhin

/** 
    * The timeout in milliseconds for each script run on the browser. This 
    * should be longer than the maximum time your application needs to 
    * stabilize between tasks. 
    */ 
    allScriptsTimeout?: number; 
2

Vorübergehend Sehen ermöglichen browser.ignoreSynchronization es fixiert, wie es in einer Antwort here berichtet.

browser.ignoreSynchronization = true; 

(Code, der den Fehler wirft)

browser.ignoreSynchronization = false; 
Verwandte Themen