Skip to main content

Cypress.ensure

Cypress.ensure is a collection of helper methods for making assertions. They are mostly useful when writing custom queries or custom commands.

Most functions on Cypress.ensure accept a subject argument, check an assertion, and throw an error if the assertion fails. These functions have no return value.

Syntax​

// Type of argument
Cypress.ensure.isType(subject, type, commandName, cy)​
Cypress.ensure.isElement(subject, commandName, cy)​
Cypress.ensure.isWindow(subject, commandName, cy)
Cypress.ensure.isDocument(subject, commandName, cy)​

// State of DOM element
Cypress.ensure.isAttached(subject, commandName, cy)​
Cypress.ensure.isNotDisabled(subject, commandName)​
Cypress.ensure.isNotHiddenByAncestors(subject, commandName)​
Cypress.ensure.isNotReadonly(subject, commandName)​
Cypress.ensure.isScrollable(subject, commandName)​
Cypress.ensure.isStrictlyVisible(subject, commandName)​
Cypress.ensure.isVisible(subject, commandName)​
caution

Many of these functions accept an optional onFail argument. This is a legacy feature used to customize the thrown error, and may be removed in a future release; we recommend against relying on it. If you need more control over the error thrown, write your own ensure function instead.

Usage​

Correct Usage

Cypress.Commands.addQuery('getChildById', function (id) {
return (subject) => {
// Verify that the subject is an element, document, or window object
Cypress.ensure.isType(
subject,
['element', 'document', 'window'],
'getChildById',
cy
)

return $$(`#${id}`, subject)
}
})

const queryName = 'verifyElementActionable'

Cypress.Commands.addQuery(queryName, function (...args) {
return (subject) => {
// Verify that the subject fulfills a variety of conditions
Cypress.ensure.isElement(subject, queryName, cy)
Cypress.ensure.isVisible(subject, queryName, cy)
Cypress.ensure.isNotDisabled(subject, queryName, cy)
Cypress.ensure.isNotReadonly(subject, queryName, cy)

return subject
}
})

See also​

  • "Custom Queries" contains more information about writing custom queries, which is the main use-case for the ensure functions.