У меня есть одностраничное приложение, которое использует Dojo для перемещения между страницами. Я пишу некоторые функциональные тесты с использованием стажера, и есть некоторые проблемы с niggly, которые я пытаюсь вытеснить. В частности, у меня возникли проблемы с тем, чтобы стажер работал с таймаутами. Ни один из тайм-аутов, похоже, не имеет никакого эффекта для меня. Я пытаюсь установить начальный тайм-аут загрузки с помощью «setPageLoadTimeout (30000)», но это кажется проигнорированным. Я также называю «setImplicitWaitTimeout (10000)», но опять же это, похоже, не имеет никакого эффекта.Intern.io Single Page Application Functional Testing
Основная проблема, с которой я сталкиваюсь, заключается в том, что в моей тестовой среде может потребоваться несколько секунд, чтобы запрос был отправлен, а ответ проанализирован и введен в DOM. Единственный способ, которым я смог обойти это, - это явно назвать «sleep (3000)», но это может быть немного удалено &, а иногда элементы DOM не готовы к тому времени, когда я их запрошу. (как упоминалось, setImplicitWaitTimeout (10000), похоже, не имеет для меня эффекта)
С приложением я запускаю событие, когда DOM обновлен. Я использую dojo.subscribe, чтобы подключиться к этому в applictaion. Можно ли использовать dojo.subscribe внутри стажера для контроля выполнения моих тестов?
Heres образец моего кода. Я должен также упомянуть, что я использую Dijit так что есть также небольшая задержка при получении ответа и виджеты создаются (с помощью деклараций данных додзё типа) ...
define([
'intern!object',
'intern/chai!assert',
'require',
'intern/node_modules/dojo/topic'
], function (registerSuite, assert, require, topic) {
registerSuite({
name: 'Flow1',
// login to the application
'Login': function(remote) {
return remote
.setPageLoadTimeout(30000)
.setImplicitWaitTimeout(10000)
.get(require.toUrl('https://localhost:8080/'))
.elementById('username').clickElement().type('user').end()
.elementById('password').clickElement().type('password').end()
.elementByCssSelector('submit_button').clickElement().end();
},
// check the first page
'Page1':function() {
return this.remote
.setPageLoadTimeout(300000) // i've tried these calls in various places...
.setImplicitWaitTimeout(10000) // i've tried these calls in various places...
.title()
.then(function (text) {
assert.strictEqual(text, 'Page Title');})
.end()
.active().type('test').end()
.elementByCssSelector("[title='Click Here for Help']").clickElement().end()
.elementById('next_button').clickElement().end()
.elementByCssSelector("[title='First Name']").clear().type('test').end()
.elementByCssSelector("[title='Gender']").clear().type('Female').end()
.elementByCssSelector("[title='Date Of Birth']").type('1/1/1980').end()
.elementById('next_button').clickElement().end();
},
// check the second page
'Page2':function() {
return this.remote
.setImplicitWaitTimeout(10000)
.sleep(2000) // need to sleep here to wait for request & response injection and DOM parsing etc...
.source().then(function(source){
assert.isTrue(source.indexOf('test') > -1, 'Should contain First Name: "test"');
}).end()
// more tests etc...
}
});
});
Я импортирование соответствующий модуль Dojo из узла узла dojo-узла, но я не уверен, как его использовать.
Благодаря
Не могли бы вы показать код, который используете? –
Я просто добавил несколько примеров кода. Благодаря! – fatlog
У кого-нибудь есть идеи? Даже сделав шаг назад с этим вопросом. Настройки «тайм-аута» с помощью обертки WD для меня не работают. Независимо от того, что я делаю, я не могу получить начальное время ожидания ожидания для возврата запроса, чтобы он отличался от значения по умолчанию 30 секунд. Кто-нибудь даже получил пример установленных функций тайм-аута? – fatlog