Bonnes Pratiques
Ce guide vise à partager nos meilleures pratiques qui vous aident à écrire des tests performants et robustes.
Utiliser des sélecteurs robustes
En utilisant des sélecteurs qui résistent aux changements dans le DOM, vous aurez moins de tests qui échouent, voire aucun, lorsque par exemple une classe est supprimée d'un élément.
Les classes peuvent être appliquées à plusieurs éléments et devraient être évitées si possible, sauf si vous souhaitez délibérément récupérer tous les éléments avec cette classe.
// 👎
await $('.button')
Tous ces sélecteurs devraient retourner un seul élément.
// 👍
await $('aria/Submit')
await $('[test-id="submit-button"]')
await $('#submit-button')
Note: Pour découvrir tous les sélecteurs possibles que WebdriverIO prend en charge, consultez notre page Selectors.
Limiter le nombre de requêtes d'éléments
Chaque fois que vous utilisez la commande $
ou $$
(y compris en les chaînant), WebdriverIO essaie de localiser l'élément dans le DOM. Ces requêtes sont coûteuses, vous devriez donc essayer de les limiter autant que possible.
Requête trois éléments.
// 👎
await $('table').$('tr').$('td')
Requête un seul élément.
// 👍
await $('table tr td')
Le seul moment où vous devriez utiliser le chaînage est lorsque vous voulez combiner différentes stratégies de sélection. Dans l'exemple, nous utilisons les Deep Selectors, qui est une stratégie pour accéder au shadow DOM d'un élément.
// 👍
await $('custom-datepicker').$('#calendar').$('aria/Select')