2016-12-22 15 views
13

Chciałbym zakończyć do końca przetestować naszą kątową 2 Zastosowanie użyciu kątomierz, ale utknąłem z komunikatem:Failed: Przekroczono limit czasu oczekiwania na asynchroniczne zadania kątowe, aby zakończyć po 11 sekundach

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

Mój plik conf.

exports.config = { 
    directConnect: true, 
    specs: ['spec.js'], 

    // For angular2 tests 
    useAllAngular2AppRoots: true, 
} 

Chrome jest otwarty, a strona internetowa jest również otwarta, a następnie nic się nie dzieje do czasu zakończenia.

Po wyłączeniu synchronizacji (przy użyciu browser.ignoreSynchronization = true;), jest OK. Ale tracę funkcję "automatycznego czekania", jedną z głównych zalet używania Kątomierza.

Wniosek jest w całości oparty na kancie 2. Dlaczego to nie działa?

Nasi programiści powiedzieli mi, że nie jesteśmy sondowaniem (jedna z możliwych przyczyn według Protractor documentation). Przy okazji, używamy architektury websocket. Nie wiem, czy istnieje link.

Właściwie to nie wiem, jak w ogóle rozwiązać ten problem.

Czy ktoś może pomóc, proszę?

+0

Możliwy duplikat [kątomierz przetestować bootstrap modal - nie kanciasty stronę - timeout] (http://stackoverflow.com/questions/ 40817733/test kątomierza-a-bootstrap-modal-not-angle-page-timeout) –

+0

Czy możesz wypróbować poniższe rozwiązanie i sprawdzić, czy działa – AdityaReddy

Odpowiedz

6

Twoje przypuszczenie jest słuszne. Ten błąd wystąpiłby, gdy są jakieś zaległe zadania uruchomione w aplikacji angle2.

Tak, najczęstszym powodem jest to, że aplikacja stale odpytuje $ timeout lub $ http, Protractor będzie czekać bezterminowo i przekroczy limit czasu. Ale to może również wystąpić w scenariuszach, w których App trwa dłużej niż 11 sekund

Zapoznaj here uzyskać więcej informacji na różne limity czasu

domyślna wartość limitu czasu wynosi 11 sekund. Można to zmienić poprzez dostosowanie wartości poniżej config.js i spróbować i zobaczyć, czy są nadal widząc WYDANIE

/** 
    * 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

Tymczasowo umożliwiając browser.ignoreSynchronization przytwierdza to, jak podano w odpowiedzi here.

browser.ignoreSynchronization = true; 

(kod, który generuje błąd)

browser.ignoreSynchronization = false; 
1

Modyfikacja przypadek testowy i umieścić browser.waitForAngularEnabled(false); po pierwszym kliknięciu, powinno działać.

jednak zalecana metoda może być nadrzędny domyślny limit czasu w pliku conf.js jak allScriptsTimeout: 110000

Powiązane problemy