Mam aplikację bootstrapped Angular (1.2.6). Oznacza to, że nie ma wyraźnego ng-app
. W związku z tym natknąłem się na różnego rodzaju problemy z testowaniem szkieletu Protractor (przy użyciu SauceLabs i grunt-protractor-runner).Kątomierz: jak czekać na pełne obciążenie bootstrapped AngularJS
Błędy różnić w zależności od tego, co próbuję, ale ogólnie:
Error: Angular could not be found on the page http://xxx:9000/ :
angular never provided resumeBootstrap
Albo ...
Error: Error while waiting for Protractor to sync with the page: {}
Znalazłem kilka proponowanych rozwiązań, które próbowałem. W tym te znalezione w this rich thread, a także here. Nic, co robię, nie działa.
Próbowałem użyć angular.resumeBootstrap
w bootstrappingu jak tak (uwaga Próbowałem wiele odmian tego bezskutecznie, w tym stara się ustawić NG-app programowo na ciele dokumentu):
angular.element(document).ready(function() {
window.name = 'NG_DEFER_BOOTSTRAP!'
angular.bootstrap(document, [ 'app' ]);
setTimeout(angular.resumeBootstrap, 0);
});
błąd na to, jak odkryli inni, jest dziwne:
UnknownError: unknown error: [ng:btstrpd] App Already Bootstrapped with this Element
'<body ng-app="" ng-controller="ApplicationController" class=" ng-scope pace-done">'
Co dziwne/irytujące jest to, że, przynajmniej patrząc na sesji Labs sos wydaje się, że ten test działa ... to tylko dziwnie myślenie był dwukrotnie ładowany.
Próbowałem również używać różnych kombinacji waitForAngular
, wait
i innych w samym teście. Oto jedna odmiana Próbowałem:
it('should load the home page', function() {
ptor = protractor.getInstance();
ptor.waitForAngular();
ptor.driver.get('http://xxx:9000/');
ptor.driver.wait(function() {
return ptor.getCurrentUrl().then(function() {
return ptor.isElementPresent(by.id('signIn')).then(function() {
console.log('we are here!');
return true;
});
});
})
.then(function() {
expect(ptor.isElementPresent(by.id('signIn'))).toBe(true);
});
});
To skutkuje błędami tak:
1) e2e: home should load the home page
Message: timeout: timed out after 20000 msec waiting for spec to complete
Stacktrace: undefined
Próbowałem zostały również zwiększenie różne limity czasu w pliku konfiguracyjnym bezskutecznie.
Każda pomoc będzie bardzo ceniona!
@alecxe 'grunt-protractor-runner @ 1.1.4' oraz' kątomierz @ 1.4.0'. Pracowałem z wcześniejszymi wersjami obu, ulepszonymi (myśląc, że to pomogłoby) ... i nie (zauważalne) różnice w błędach. – pjb
Nie jestem pewien, czy to pomogłoby, ale spróbuj zmienić kątomierz na wcześniejsze wersje. – alecxe
@alecxe tak, wcześniej próbowałem z 'kątomierzem @ 0.24.2' (!) I tymi samymi wynikami. – pjb