35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
/**
|
|
* A custom Nightwatch assertion. The assertion name is the filename.
|
|
*
|
|
* Example usage:
|
|
* browser.assert.elementCount(selector, count)
|
|
*
|
|
* For more information on custom assertions see:
|
|
* https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-assertions
|
|
*
|
|
*
|
|
* @param {string|object} selectorOrObject
|
|
* @param {number} count
|
|
*/
|
|
|
|
exports.assertion = function elementCount (selectorOrObject, count) {
|
|
let selector
|
|
|
|
// when called from a page object element or section
|
|
if (typeof selectorOrObject === 'object' && selectorOrObject.selector) {
|
|
// eslint-disable-next-line prefer-destructuring
|
|
selector = selectorOrObject.selector
|
|
} else {
|
|
selector = selectorOrObject
|
|
}
|
|
|
|
this.message = `Testing if element <${selector}> has count: ${count}`
|
|
this.expected = count
|
|
this.pass = val => val === count
|
|
this.value = res => res.value
|
|
function evaluator (_selector) {
|
|
return document.querySelectorAll(_selector).length
|
|
}
|
|
this.command = cb => this.api.execute(evaluator, [selector], cb)
|
|
}
|