Транспортир + огурец ждет и время ожидания, не выполняя полный тест
Я внедряю тесты E2E, используя Protractor с CucumberJS. Проблема, с которой я сталкиваюсь, заключается в том, что она выполняет только 1-й шаг и ждет, пока не истечет время ожидания. Эта проблема только при использовании объекта страницы.
Вот мой файл функций:
Сценарий: проверить добавление веса инцидента. При добавлении приоритетной программы и добавлении типа веса инцидента. И пользователь создает инцидент. Тогда вес инцидента должен отображаться правильно.
Файл объекта страницы:
var createincidentpage = function(){
this.priorityAdd = function(userdetail, callback) {
browser.ignoreSyncronization = true;
incidentSection.click()
.then(function(){
return PPPage.click();
}).then(function(){
browser.switchtTo().frame(0);
return newElement.click();
}).then(fucntion(){
return newppname.sendkeys("xyz");
}).then(function(){
return fromDatePicker.click();
}).then(function(){
return gotoTodayElement.click();
}).then(function(){
return editableOk.Click();
}).then(function(){
return toDatePicker.click();
}).then(function(){
return selDateinMOnth.click();
}).then(function(){
SubmitButton.click();
return callback();
});
};
module.exports = new createincidentpage();
Файл моего шага:
var createincidentpage = require ('../pages/createincidentpage.js');
Given('priority program add' , function (callback) {
createincidentpage.priorityAdd(function callback(){
callback();
}):
});
1 ответ
Потому что вы не вспомните callback()
внутри priorityAdd()
,
Для большей ясности я переименую некоторую переменную в следующем коде.
Вы должны позвонить callback()
происходит от Given()
иначе среда выполнения не может завершить Given()
и подождите до истечения времени ожидания, как вы встретились.
Вы называете callback()
внутри Given()
прямо или передать вниз callback
во вложенную функцию, как вы это сделали, и вызовите ее внутри вложенной функции.
var createincidentpage = function(){
this.priorityAdd = function(userdetail) {
browser.ignoreSyncronization = true;
incidentSection.click()
PPPage.click();
browser.switchtTo().frame(0);
newElement.click();
newppname.sendkeys("xyz");
fromDatePicker.click();
gotoTodayElement.click();
editableOk.Click();
toDatePicker.click();
selDateinMOnth.click();
return SubmitButton.click();
};
module.exports = new createincidentpage();
Шаг файла:
var createincidentpage = require ('../pages/createincidentpage.js');
//Option 1, invoke `callback`
Given('priority program add', function(callback) {
createincidentpage.priorityAdd().then(function(){
return callback();
});
});
// Option 2, return a promise like object, recommend to use option 2
Given('adding incident weight type', function(){
return createincidentpage.priorityAdd();
});