Ho sviluppato test automatici in Protractor per un po 'di tempo e come molti di voi, ho incontrato lacune che possono essere incrociate solo con il browser.sleep()
-bridge. Non sono un fan delle cose difficili da codificare come questa, ma se è necessario lo farò.Timeout goniometro
I test che ho sviluppato mi hanno portato ad un punto in cui ogni browser.sleep(1000)
ha un impatto importante sul mio runtime. I test stanno attualmente testando le autorizzazioni per diversi account (128 esattamente) e questo comporta l'accesso e l'uscita mentre si controlla ciò che ogni account ha e non ha ricevuto l'accesso a.
Il sito sto testando è un'applicazione pura AngularJS che, ai miei occhi, dovrebbe fare browser.sleep()
un metodo obsoleto in quanto non v'è un metodo browser.waitForAngular()
che attende con precisione fino a quando la pagina è completamente caricata rispetto al browser.sleep()
che attende un certo lasso di tempo e se il tuo sito web non viene caricato entro quel tempo (succede), avrai un test incoerente (a nessuno piace l'incoerenza).
La ricerca mi ha portato a credere che browser.waitForAngular()
non tenga conto delle animazioni e delle relative funzionalità che richiedono tempo poiché non sono correlate a AngularJS, tuttavia questo non è implementato nel nostro sito web. Anche waitForAngular()
attende sostanzialmente $digest
, $http
e $timeout
.
Quello che sto chiedendo è che si tratti di qualcosa che è considerato una perdita accettabile dal momento che Goniometro è grande in generale o c'è qualcosa che sto trascurando qui?
TL; DR: Ci sono soluzioni disponibili per permetterci di non accontentarsi di browser.sleep()
?
Fonti: Protractor Timeout Docs, Timeout-spec.js (protractor docs), Issue909, Issue279, Issue92, StackQuestion1
Ho riscontrato gli stessi timeout intermittenti che vengono incolpati nelle domande frequenti sull'uso di $ timeout per il polling. Vago se il suo fallimento anche nei casi non è il polling. Per il mio team viene più alla luce poiché facciamo affidamento sui componenti del materiale angolare. Sono pesanti nelle interazioni di animazione con l'uso pesante di $ timeout (func, 0). –