Ошибка определения шага cucumber.js с ошибкой тайм-аута на первом шаге - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть сценарий, в котором мне необходимо войти на веб-сайт и выполнить некоторые проверки, ниже приведен мой файл функций -

Feature:
As a developer
I need to validate 
The login functionality and Home Page of common-core workflow

Scenario: Check title and number of apps on Home Page
    Given I login into myWebsite 
    Then I expect that the title of the page is "Welcome to My WebSite"
    And Number of apps is 7
    Then Number of apps in left drawer has count 8

Файл определения шага такой же, как ниже -

Given(/^I login into myWebsite/, function() {
loginPage.login();
});

Then(/^I expect that the title of the page is "Welcome to My WebSite"/, 
function() {
homePage.waitForPageLoad();
homePage.homePageTitle.should.be.equal("Welcome to My WebSite");
});

Then(/^Number of apps is (\d+)/, function(count) {
expect(homePage.allApps.length).to.be.equal(7);
});

Then(/^Number of apps in left drawer has count (\d+)/, function(count) {
expect(homePage.navDrawerLeftArray.length).to.be.equal(count);
});

Я использовал объектную модель страницы для извлечения веб-элементов и файл Chai.js для оценок.

Когда я выполняю вышеуказанные шаги, я получаю сообщение об ошибке -

[chrome #0-0]     Check title and number of apps on Home Page
[chrome #0-0]       1) I login into myWebsite product
[chrome #0-0]       !! I expect that the title of the page is "Welcome to My 
WebSite"
[chrome #0-0]       !! Number of apps is 7
[chrome #0-0]       !! Number of apps in left drawer has count 8
[chrome #0-0]
[chrome #0-0]
[chrome #0-0] 3 pending (59s)
[chrome #0-0] 1 failing
[chrome #0-0]
[chrome #0-0] 1) Check title and number of apps on Home Page6 I login into 
myWebsite:
[chrome #0-0] function timed out, ensure the promise resolves within 30000 
milliseconds
[chrome #0-0] Error: function timed out, ensure the promise resolves within 
30000 milliseconds
[chrome #0-0]     at Timeout._onTimeout 
(Project_Path\user_code_runner.js:93:22)
[chrome #0-0]     at ontimeout (timers.js:498:11)
[chrome #0-0]     at tryOnTimeout (timers.js:323:5)
[chrome #0-0]     at Timer.listOnTimeout (timers.js:290:5)

1 Ответ

0 голосов
/ 26 сентября 2018

одна вещь, которая может быть проблемой ...

Вы используете неправильные регулярные выражения, насколько я вижу в любом случае

Then I expect that the title of the page is "Welcome to My WebSite"

из вашего файла функций, однако, правильно, когда вывставьте это обратно в ваши определения шагов, сделайте что-то подобное вместо того, что вы делаете

Then("I expect that the title of the page is {string}", 
function => {

, который передаст строку "Welcome to My WebSite" из вашего файла возможностей в ваш файл определений шагов, яЯ предполагаю, что если вы удалите регулярные выражения из своего исходного теста, это, вероятно, позволит ему пройти, в настоящий момент я думаю, что не совсем понятно, какой тест нужно запустить из-за использования вами регулярных выражений.

Также добавьте что-токак это делается в ваших тестах, чтобы убедиться, что страница не пытается загрузить скрипт до загрузки элементов.

driver.wait(until.elementIsVisible(pageElement), 10000)

Наконец, вы не имеете дело с необработанными обещаниями, которые заставят код работать нечетноНиже приведен пример того, как я имею дело с обещанием, я опубликую определение шага и характерную строку, чтобы вы знали, как это сделать.Я делаю вещи.

Определение шага:

   Given("I open the page with the url {string} and route {string}", (url, route, next) => {
    driver.get(`${url}${route}`).then(() => {
        next();
    }).catch(ex => {
        console.log(ex);
    });
});

и характерная линия для соответствия ..

Given I open the page with the url "http://localhost:3000" and route "/login"

надеюсь, это по крайней мере сделает ваше тестированиелучшие стандарты, причина, по которой вы бы использовали огурец, состоит в том, чтобы передавать данные из файла объектов в файл определений шагов, чтобы использовать одно и то же определение шага для нескольких функций / сценариев.

Дайте мне знать, могу ли ябольше помощи.

...