2017-01-23 5 views
0

при выполнении теста на местном уровне это удается, но при настройке удаленной сетки, он терпит неудачу сувеличение времени ожидания при работе с удаленной сеткой

1) Scenario: Login - features/api.feature:10 
    Step: When he enters his credentials - features/api.feature:13 
    Step Definition: node_modules/serenity-js/src/serenity-cucumber/webdriver_synchroniser.ts:46 
    Message: 
    function timed out after 5000 milliseconds 

Как можно увеличить значение тайм-аута?

Благодаря & Ciao Стефан

ответ

1

Привет Стефан и спасибо за то, что Серенити/JS попробовать!

У вас есть пара вариантов здесь, в зависимости от того, что выберет время.

Поскольку он является транспортиром, который отвечает за таймауты, вам нужно будет заглянуть в свой файл protractor.conf.js.

Предположим, что ваш файл protractor.conf.js выглядит более или менее похожим на фрагмент ниже. Я опускаю Serenity/JS и Cucumber.js конфигурации для краткости, как они описаны в serenity-js.org:

exports.config = { 

    baseUrl: 'http://your.webapp.com', 

    // Serenity/JS config 
    framework: ... 

    specs: [ 'features/**/*.feature' ], 

    cucumberOpts: { 
     // ... 
    }, 

}; 

0. Увеличение общего таймаута

Для начала, вы можете увеличить общий тайм-аут всех тестов (для Protractor 5.0.0 значение по умолчанию установлено на 11s).

Чтобы сделать это, добавьте allScriptsTimeout запись в вашей конфигурации:

exports.config = { 

    allScriptsTimeout: <appropriate_timeout_in_millis> 

    // ... rest of the config file 
} 

1. Загрузка страницы

Если веб-приложение тестируемый медленно загружаться, вы можете настроить getPageTimeout недвижимость (по умолчанию установлено значение 10s):

exports.config = { 

    getPageTimeout: <appropriate_timeout_in_millis> 

    // ... rest of the config file 
} 

2. Стадия специфических Огурцов

Если конкретный шаг Огурца таймаут (который, скорее всего, дело здесь, как Cucumber.js устанавливает default value of the cucumber step timeout к 5s), вы можете увеличить время ожидания путем изменения шаг определение (значение в Millis):

this.Given(/^When he enters his credentials$/, { timeout: 10 * 1000 },() => { 
    return stage.theActorInTheSpotlight().attemptsTo(
     Login.withTheirCredentials() 
    ); 
}); 

Пожалуйста, обратите внимание, что в ответе выше я предполагаю, что вы используете Serenity/JS с огурцами, чтобы проверить угловое приложение. Если вы используете другой веб-фреймворк (например, React), тест может также занять время, когда Protractor ожидает загрузки Angular.

Если это описывает ваш сценарий, вы можете ignoreSynchronization:

exports.config = { 

    onPrepare: function() { 
     browser.ignoreSynchronization = false; 
    } 

    // ... rest of the config file 
} 

Чтобы узнать больше, проверить Protractor documentation и уже упоминавшийся Cucumber docs.Я также добавлю статью о serenity-js.org в ближайшее время, чтобы описать различные варианты, поэтому все находится в одном месте :-)

Надеюсь, это поможет!

Jan

+0

Это работает, за исключением 'browser.ignoreSynchronization', который устарел. –