Я использую intern для автоматизации тестирования пользовательского интерфейса. У меня есть тест, в котором ввод неверного имени пользователя приводит к ошибке тестирования. Тем не менее, мой тест не терпит неудачу, когда он должен.тест не работает с использованием chai assert with intern
шаги я хочу автоматизировать:
- ввести имя пользователя следующую кнопку
- щелчка
- проверить, если пароль текстовое поле отображается (текстовое поле пароля отображается только если имя пользователя является действительным еще остаются на той же странице)
Вот мой код:
Страница сценария объекта:
enterLoginName: function (username) {
console.log('entering username');
return this.remote
.findById(this.locator.uname).clearValue().sleep(1000)
.type(username)
.end().then(function() {
console.log('username entered ');
})
.findById(this.locator.nextbtn).sleep(1000)
.click().end(); // enter login name and click next button
},
isValidUsername:function() {
console.log('checking if password textbox is displayed');
return this.remote
.findDisplayedById(this.locator.pwd).isDisplayed();
//passowd test box is only shown if username is valid
},
Test Script:
'correct login name lands to password page': function() {
loginPage.enterLoginName('ss').then(function() {
loginPage.isValidUsername().then(function (pass) {
console.log(pass);
}, function (fail) {
// code reaches here since password test box is not displayed
console.log('user name uas valid , enter password panel not was shown');
assert.fail(0, 1, 'Exception not thrown');// test not failing
});
})
Может кто-то пожалуйста, объясните, что не работает здесь и как заставить его работать правильно?
я не понимаю. Вы можете объяснить?? – CodeBlooded
В тестовом скрипте вы вызываете функции, которые являются асинхронными и которые возвращают Promise (или объекты, подобные обещаниям), например 'loginPage.enterLoginName'. При использовании обещаний в тестах вам необходимо: 1) вернуть конец Цепочки Promise, чтобы Интернл мог сказать, когда операция async завершена, и 2) убедитесь, что вы возвращаете любые обещания, сгенерированные в обратных вызовах 'then', чтобы гарантировать, что _all_ async операции. Поэтому вам нужно 'return loginPage.enterLoginName' на внешнем уровне и' return loginPage.isValidUsername' в обратном вызове 'then'. – jason0x43