cypress-testing-library
![tiger](https://raw.githubusercontent.com/kentcdodds/cypress-testing-library/master/other/tiger.png)
Simple and complete custom Cypress commands and utilities that encourage good testing practices.
The problem
You want to use dom-testing-library
methods in your Cypress tests.
This solution
This allows you to use all the useful dom-testing-library
methods in your tests.
Table of Contents
Installation
This module is distributed via npm which is bundled with node and
should be installed as one of your project's devDependencies
:
npm install --save-dev cypress-testing-library
Usage
cypress-testing-library
extends Cypress' cy
command.
Add this line to your project's cypress/support/commands.js
:
import 'cypress-testing-library/add-commands';
You can now use all of dom-testing-library
's getBy
, getAllBy
, queryBy
and queryAllBy
commands. See dom-testing-library
repo for reference
To show some simple examples (from cypress/integration/commands.spec.js):
cy.getAllByText('Jackie Chan').click()
cy.queryByText('Button Text').should('exist')
cy.queryByText('Non-existing Button Text').should('not.exist')
cy.queryByLabelText('Label text', { timeout: 7000 }).should('exist')
cy.get('form').within(() => {
cy.getByText('Button Text').should('exist')
})
cy.get('form').then((subject) => {
cy.getByText('Button Text', { container: subject }).should('exist')
})
cypress-testing-library
supports both jQuery elements and DOM nodes. This is necessary because Cypress uses jQuery elements, while dom-testing-library
expects DOM nodes. When you pass a jQuery element as container
, it will get the first DOM node from the collection and use that as the container
parameter for the dom-testing-library
functions.
Other Solutions
I'm not aware of any, if you are please make a pull request and add it here!
Contributors
Thanks goes to these people (emoji key):
Kent C. Dodds 💻 📖 🚇 |
Ivan Babak 💻 🤔 |
Łukasz Gandecki 💻 |
Peter Kamps 💻 📖 🤔 |
---|
This project follows the all-contributors specification. Contributions of any kind welcome!
LICENSE
MIT