Nightwatch Testing Library
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
nightwatch-testing-library permet d'utiliser les requêtes de dom-testing-library
dans Nightwatch pour les tests end-to-end web.
Installation
Assurez-vous d'abord de suivre les instructions d'installation et de configuration de Nightwatch
ensuite
- npm
- Yarn
npm install --save-dev @testing-library/nightwatch
yarn add --dev @testing-library/nightwatch
LISEZ CECI EN PREMIER
Fondamentalement, nightwatch-testing-library traduit les requêtes
dom-testing-library en sélecteurs CSS. Cela vient du fait que
Nightwatch respecte les standards WebDriver pour les
stratégies de localisation.
Actuellement, cela signifie que les logs afficheront des chemins CSS très détaillés.
Les PR sont les bienvenues pour créer un
rapporteur personnalisé
afin de résoudre ce problème 🤗.
N'oubliez donc pas : les résultats des requêtes NWTL sont des localisateurs WebDriver, pas des nœuds DOM.
Note : dans NWTL, toutes les requêtes doivent être précédées de
await.
Utilisation
const {getQueriesFrom} = require('@testing-library/nightwatch')
module.exports = {
beforeEach(browser, done) {
browser.url('http://localhost:13370')
done()
},
async getByLabelText(browser) {
const {getByLabelText} = getQueriesFrom(browser)
const input = await getByLabelText('Label Text')
browser.setValue(input, '@TL FTW')
browser.expect.element(input).value.to.equal('@TL FTW')
},
async getByAltText(browser) {
const {getByAltText} = getQueriesFrom(browser)
const image = await getByAltText('Image Alt Text')
browser.click(image)
browser.expect
.element(image)
.to.have.css('border')
.which.equals('5px solid rgb(255, 0, 0)')
},
}
Requêtes AllBy
Les résultats des requêtes AllBy disposent d'une fonction supplémentaire : nth
qui peut être utilisée dans les fonctions Nightwatch ainsi que dans la fonction within de NWTL.
async 'getAllByText - regex'(browser) {
const { getAllByText } = getQueriesFrom(browser);
const chans = await getAllByText(/Jackie Chan/)
browser.expect.elements(chans).count.to.equal(2)
const firstChan = chans.nth(0);
const secondChan = chans.nth(1);
browser.click(chans.nth(0));
browser.click(chans.nth(1));
browser.expect.element(secondChan).text.to.equal('Jackie Kicked');
browser.expect.element(firstChan).text.to.equal('Jackie Kicked');
},
Configuration
Vous pouvez personnaliser le testIdAttribute via la fonction configure comme dans
dom-testing-library :
const {configure} = require('@testing-library/nightwatch')
configure({testIdAttribute: 'data-automation-id'})
Conteneurs
Par défaut, les requêtes sont pré-liées à document.body, donc aucun conteneur n'est nécessaire.
Cependant, si vous souhaitez restreindre votre requête à un conteneur spécifique,
vous pouvez utiliser within.
Exemples d'utilisation de within
const {getQueriesFrom, within} = require('@testing-library/nightwatch')
module.exports = {
beforeEach(browser, done) {
browser.url('http://localhost:13370')
done()
},
async 'getByText within container'(browser) {
const {getByTestId} = getQueriesFrom(browser)
const nested = await getByTestId('nested')
const button = await within(nested).getByText('Button Text')
browser.click(button)
browser.expect.element(button).text.to.equal('Button Clicked')
},
}