Я смог сделать это, используя пользовательское утверждение.
В файле test/e2e/custom-assertions/isValidInput.js
:
exports.assertion = function (selector, stateAttr, stateValue) {
this.message = 'Testing if element <' + selector + '> has ValidityState ' + stateAttr + ': ' + stateValue
this.expected = stateValue
this.pass = function (val) {
return val === this.expected
}
this.value = function (res) {
return res.value[stateAttr]
}
this.command = function (cb) {
var self = this
return this.api.execute(
function (selector) {
return document.querySelector(selector).validity
},
[selector],
function (res) {
cb.call(self, res)
}
)
}
}
Тогда вы можете использовать его таким образом, например, для требуемая пустая форма ввода:
browser
.assert.isValidInput('#form-input-id', 'valid', false)
.assert.isValidInput('#form-input-id', 'valueMissing', true)
Не забудьте загрузить пользовательское утверждение. Для меня мне пришлось добавить это в мой файл nightwatch.conf.js
:
module.exports = {
...
custom_assertions_path: ['test/e2e/custom-assertions'],
...
}