Ho molta instabilità con il goniometro, e sono sicuro che c'è qualcosa che non capisco. A volte ho bisogno di usare il .then() quando si fa clic su un pulsante prima di continuare, a volte non ha alcun impatto e non dovrei usare .then() o il test non è riuscito.Quando dovremmo usare. Poi con Protractor Promise?
Mi chiedo quando dovrei usare il callback .then() durante il test in Goniometro? Esempio:
createAccountForm = $('#form-create-account');
submitButton = createAccountForm.$('button[type=submit]');
browser.wait(EC.elementToBeClickable(submitButton), 5000);
submitButton.click(); // .then(function(){ <-- uncomment in the .then form
// find the confirmation message
var message = $('.alert-success');
browser.wait(EC.visibilityOf(message), 5000);
log.debug('After visibilityOf');
expect(message.isPresent()).to.be.eventually.true;
// }); --> uncomment when in .then form
Quando uso questa forma di prova (senza .then()) che vedo sul browser che il clic sul pulsante non è fatto, il test di continuare con il seguente aspettano e poi fermarsi .
Se Io uso il modulo .then(), il clic sul pulsante è fatto e il test continua senza errori.
In altri test, non è necessario utilizzare il callback then() quando si fa clic sul pulsante.
Quindi, quando dovrei usare il .then() e quando no?
Jean-Marc
Come sarebbe l'uscita testX essere diverso se si chiama Testaccount () direttamente (senza le risorse browser.controlFlow)? – Mike
Inoltre, perché la necessità di browser.wait? – Mike
Se testAccount viene chiamato direttamente, a volte si ha l'ordine corretto e talvolta non dipende dalla velocità del browser o della macchina. Potresti avere qualcosa come 0, 1, 2, 3, 5, 6, 4 o il test expect (message.isPresent()). To.be.eventually.true può essere valutato dopo che il testAccount chiama – jmcollin92