Aller au contenu principal

Matchers Personnalisés

WebdriverIO utilise une bibliothèque d'assertions de style Jest expect qui offre des fonctionnalités spéciales et des matchers personnalisés spécifiques pour exécuter des tests web et mobiles. Bien que la bibliothèque de matchers soit importante, elle ne convient certainement pas à toutes les situations possibles. Il est donc possible d'étendre les matchers existants avec des matchers personnalisés définis par vous.

avertissement

Bien qu'il n'y ait actuellement aucune différence dans la façon dont les matchers sont définis, qu'ils soient spécifiques à l'objet browser ou à une instance element, cela pourrait certainement changer à l'avenir. Gardez un œil sur webdriverio/expect-webdriverio#1408 pour plus d'informations sur ce développement.

Matchers Personnalisés pour le Navigateur

Pour enregistrer un matcher personnalisé pour le navigateur, appelez extend sur l'objet expect soit directement dans votre fichier spec, soit dans le cadre du hook before dans votre wdio.conf.js :

customMatchers/example.ts
loading...

Comme montré dans l'exemple, la fonction matcher prend l'objet attendu, par exemple l'objet navigateur ou élément, comme premier paramètre et la valeur attendue comme second. Vous pouvez ensuite utiliser le matcher comme suit :

customMatchers/example.ts
loading...

Matchers Personnalisés pour les Éléments

Similaires aux matchers personnalisés pour le navigateur, les matchers d'éléments ne diffèrent pas. Voici un exemple de création d'un matcher personnalisé pour vérifier l'attribut aria-label d'un élément :

customMatchers/example.ts
loading...

Cela vous permet d'appeler l'assertion comme suit :

customMatchers/example.ts
loading...

Support TypeScript

Si vous utilisez TypeScript, une étape supplémentaire est nécessaire pour assurer la sécurité de type de vos matchers personnalisés. En étendant l'interface Matcher avec vos matchers personnalisés, tous les problèmes de type disparaissent :

customMatchers/example.ts
loading...

Si vous avez créé un matcher asymétrique personnalisé, vous pouvez de même étendre les types expect comme suit :

declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot