2014-07-25 12 views
34

Czy istnieje sposób na uruchomienie testu Angular E2E zapisanego z użyciem kątomierza powoli, aby móc obserwować, co się dzieje?Czy kątomierz może działać powoli?

+0

Um, co? Dlaczego tego chcesz? –

+6

Chciałbym uruchomić konkretny test i obserwować, jak ma miejsce interakcja. Czasami komunikaty o błędach są ezoteryczne i po prostu obserwowanie, jak odbywa się akcja, pozwoli mi szybciej wykryć rzeczywisty problem, naprawić go i zaktualizować komunikat o błędzie na później. Dzięki! – cortfr

Odpowiedz

58

Poniżej znajduje się moje rozwiązanie, aby to zrobić. Zasadniczo stworzyłem więc dekorator do funkcji bieżącego sterowania przepływem execute, który teraz dodatkowo kolejkuje opóźnienie o 100ms przed każdą kolejkowaną akcją.

To musi być uruchomiony zanim jakiekolwiek testy są wywoływane (poza describe bloku)

var origFn = browser.driver.controlFlow().execute; 

browser.driver.controlFlow().execute = function() { 
    var args = arguments; 

    // queue 100ms wait 
    origFn.call(browser.driver.controlFlow(), function() { 
    return protractor.promise.delayed(100); 
    }); 

    return origFn.apply(browser.driver.controlFlow(), args); 
}; 
+7

To jest szalone :) +1 – alecxe

+4

To jest po prostu idealne! Otworzę bilet z kątomierzem - powinny one obsługiwać możliwość opóźnienia każdego polecenia z pudełka - jest to bardziej niż przydatne podczas debugowania niepowodzenia testu. – WTK

+1

To jest Sweeeeet – Melbourne2991

13

Tak jak powiedział George Stocker w komentarzu, nie wiem, dlaczego chciałbyś to zrobić ... ale zawsze możesz dodać sen gdziekolwiek chcesz w teście.

browser.sleep(6000); 
+1

OK, dziękuję ... Domyślam się, że to, czego szukam, jest czymś, co doda krótkiego snu do przepływu kontrolnego po zakończeniu każdej obietnicy. – cortfr

+0

Dzięki, działa jak urok! :) –

11

można wprowadzić w „trybie debugowania” poprzez umieszczenie w kodzie komendy:

browser.pause(); 

W w trybie debugowania zobaczysz w terminalu następujące dane wyjściowe:

------- WebDriver Debugger ------- 
ready 

press c to continue to the next webdriver command 
press d to continue to the next debugger statement 
type "repl" to enter interactive mode 
type "exit" to break out of interactive mode 
press ^C to exit 

You może wówczas:

komenda
  • Prowadzony przez komendy wpisując c
  • dalej do rachunku obok debuggera (obok browser.pause()), wprowadzając d
  • Wprowadź w trybie interaktywnym, gdzie można wchodzić w interakcje ze wszystkimi elementami wprowadzając repl
Powiązane problemy