You want to use dom-testing-library
methods in your
Cypress tests.
This allows you to use all the useful
dom-testing-library
methods in your tests.
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 @testing-library/cypress
Typings are defined under @testing-library/cypress/typings
, and should be
added as follows in tsconfig.json
:
{
"compilerOptions": {
"types": ["cypress", "../@testing-library/cypress/typings"]
}
}
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 the dom-testing-library
docs 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.
I'm not aware of any, if you are please make a pull request and add it here!
Thanks goes to these people (emoji key):
Kent C. Dodds 💻 📖 🚇 | Ivan Babak 💻 🤔 | Łukasz Gandecki 💻 | Peter Kamps 💻 📖 🤔 | Airat Aminev 💻 | Adrian Smijulj 💻 | Soo Jae Hwang 🐛 💻 |
Justin Hall 💻 | euzebe 📖 | jkdowdle 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT