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 cypress-testing-library
Typings are defined under cypress-testing-library/typings
, and should be added as follows in tsconfig.json
:
{
"compilerOptions": {
"types": ["cypress", "../cypress-testing-library/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 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.
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):
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT