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 ensurefunctions.