Cypress Testing Library
Cypress Testing Library
を使用すると、Cypressのエンドツーエンドブラウザテスト内でdom-testingのクエリを使用できます。
- npm
- Yarn
npm install --save-dev cypress @testing-library/cypress
yarn add --dev cypress @testing-library/cypress
使用法
Cypress Testing Library
は、Cypressのcy
コマンドを拡張します。
プロジェクトのcypress/support/commands.js
に次の行を追加します。
import '@testing-library/cypress/add-commands'
グローバルなcy
オブジェクトから、DOM Testing Library
のfindBy
およびfindAllBy
コマンドの一部を使用できるようになりました。参考資料については、About queries
のドキュメントを参照してください。
注:
get*
クエリは、合理的なCypressテストでは再試行が必要であり、find*
クエリがそれをすでにサポートしているため、サポートされていません。query*
クエリはv5以降不要になり、v6で削除されます。find*
は組み込みのCypressアサーションを完全にサポートしています(query*
の唯一のユースケースを削除します)。
TypeScriptを使用する場合
型定義は、tsconfig.json
で次のように追加する必要があります。
{
"compilerOptions": {
"types": ["cypress", "@testing-library/cypress"]
}
}
すべてのライブラリ定義はこちらにあります。
例
いくつかの簡単な例を示すために(cypress/integration/find.spec.jsから)
cy.findByRole('button', {name: /Jackie Chan/i}).click()
cy.findByRole('button', {name: /Button Text/i}).should('exist')
cy.findByRole('button', {name: /Non-existing Button Text/i}).should('not.exist')
cy.findByLabelText(/Label text/i, {timeout: 7000}).should('exist')
// findByRole _inside_ a form element
cy.get('form')
.findByRole('button', {name: /Button Text/i})
.should('exist')
cy.findByRole('dialog').within(() => {
cy.findByRole('button', {name: /confirm/i})
})
Cypress Testing Library
は、jQuery要素とDOMノードの両方をサポートします。CypressはjQuery要素を使用し、DOM Testing Library
はDOMノードを期待するため、これは必要です。jQuery要素をcontainer
として渡すと、コレクションから最初のDOMノードを取得し、それをDOM Testing Library
関数のcontainer
パラメーターとして使用します。