/** * A custom Nightwatch assertion. The assertion name is the filename. * * Example usage: * browser.assert.elementHasCount(selector, count) * * For more information on custom assertions see: * https://nightwatchjs.org/guide/extending-nightwatch/adding-custom-assertions.html * */ exports.assertion = function elementHasCount(selector: string, count: number) { // Message to be displayed on the console while running this assertion. this.message = `Testing if element <${selector}> has count: ${count}` // Expected value of the assertion, to be displayed in case of failure. this.expected = count // Given the result value (from `this.value` below), this function will // evaluate if the assertion has passed. this.evaluate = function (value: any) { return value === count } // Retrieve the value from the result object we got after running the // assertion command (defined below), which is to be evaluated against // the value passed into the assertion as the second argument. this.value = function (result: Record) { return result.value } // Script to be executed in the browser to find the actual element count. function elementCountScript(_selector: string) { // eslint-disable-next-line return document.querySelectorAll(_selector).length } // The command to be executed by the assertion runner, to find the actual // result. Nightwatch API is available as `this.api`. this.command = function (callback: () => void) { this.api.execute(elementCountScript, [selector], callback) } }