Использование "nightwatch": "^1.0.11"
и "browserstack-local": "^1.3.4"
Я пробовал это много способов, но я не могу запустить примеры в документации.
У меня есть простая страница входа собъект страницы
module.exports = {
url: function() {
return this.api.launchUrl + '/login';
},
elements: {
email: {
selector: '#user_login_email'
},
password: {
selector: '#user_login_password'
},
button: {
selector: '#login-btn'
}
}
};
Затем я хочу запустить тест для входа на сайт (ПРИМЕЧАНИЕ: первый снимок экрана в порядке)
module.exports = {
before(client) {
client.maximizeWindow();
},
'Login' : function (client) {
var login = client.page.login();
login.navigate();
client.waitForElementPresent('body', 500)
.saveScreenshot('tests_output/login.png');
login.setValue('@email', 'test@user.email')
.setValue('@password', 'Pa55w0rd')
.click('@button');
client.pause(1000)
.saveScreenshot('tests_output/login-complete.png');
},
after(client) {
client.end();
}
};
При попытке запустить я получаю следующие ошибкитест через стек браузеров (с локальным URL)
✖ login.test
– Login (5.196s)
An error occurred while running .setValue() command on <Element [name=@email]>: Error: First argument passed to .elementIdValue() should be a web element ID string. Received object.
at Function.validateElementId (node_modules/nightwatch/lib/api/protocol.js:36:19)
at ProtocolActions.elementIdValue (node_modules/nightwatch/lib/api/protocol.js:951:25)
at transport.locateElement.then.result (node_modules/nightwatch/lib/api-loader/element-command.js:106:54)
at process._tickCallback (internal/process/next_tick.js:68:7)
at process._tickCallback (internal/process/next_tick.js:68:7)
at process._tickCallback (internal/process/next_tick.js:68:7)
An error occurred while running .setValue() command on <Element [name=@password]>: Error: First argument passed to .elementIdValue() should be a web element ID string. Received object.
[...]
An error occurred while running .click() command on <Element [name=@button]>: Error: First argument passed to .elementIdClick() should be a web element ID string. Received object.
[...]
Я получил успешные тесты для запуска;просто не использую документированные примеры.
Например, приведенный ниже код прекрасно работает, чтобы закрыть сообщение cookie
client
.waitForElementPresent('.cookie-message__button', 5, true, function(result) {
client.elementIdClick(result.value[0].ELEMENT);
})
.saveScreenshot('tests_output/cookie-closed.png');
Но, очевидно, это действительно долго скручивается.
Любая помощьза то, что я делаю неправильно, было бы здорово.
Использование в качестве примера для конфигурации Nightwatch следующего примера: https://github.com/browserstack/nightwatch-browserstack/blob/master/conf/local.conf.js с локальным бегуном и параллельным выполнением тестов в 3 браузерах: https://github.com/browserstack/nightwatch-browserstack/blob/master/scripts/local.runner.js
TL; DR: примеры документации не работают с версией 1.0.11;но Nightwatch и Browserstack настроены правильно, так как могут заставить работать набор (в Travis и локально), только с очень длинным кодом, который я взломал вместе.