Przejdź do głównej treści

Niestandardowe Matchery

WebdriverIO używa biblioteki asercji w stylu Jest expect, która zawiera specjalne funkcje i niestandardowe matchery przeznaczone do uruchamiania testów internetowych i mobilnych. Mimo że biblioteka matcherów jest duża, z pewnością nie obejmuje wszystkich możliwych sytuacji. Dlatego możliwe jest rozszerzenie istniejących matcherów o niestandardowe, zdefiniowane przez Ciebie.

ostrzeżenie

Chociaż obecnie nie ma różnicy w sposobie definiowania matcherów, które są specyficzne dla obiektu browser lub instancji element, może to ulec zmianie w przyszłości. Śledź webdriverio/expect-webdriverio#1408, aby uzyskać więcej informacji na temat tego rozwoju.

Niestandardowe Matchery Przeglądarki

Aby zarejestrować niestandardowy matcher przeglądarki, wywołaj extend na obiekcie expect bezpośrednio w pliku spec lub jako część np. hooka before w pliku wdio.conf.js:

customMatchers/example.ts
loading...

Jak pokazano w przykładzie, funkcja matchera przyjmuje oczekiwany obiekt, np. przeglądarkę lub element, jako pierwszy parametr i oczekiwaną wartość jako drugi. Następnie możesz używać matchera w następujący sposób:

customMatchers/example.ts
loading...

Niestandardowe Matchery Elementów

Podobnie do niestandardowych matcherów przeglądarki, matchery elementów nie różnią się. Oto przykład, jak utworzyć niestandardowy matcher do asercji atrybutu aria-label elementu:

customMatchers/example.ts
loading...

Pozwala to na wywołanie asercji w następujący sposób:

customMatchers/example.ts
loading...

Wsparcie TypeScript

Jeśli używasz TypeScript, wymagany jest jeszcze jeden krok, aby zapewnić bezpieczeństwo typów Twoich niestandardowych matcherów. Rozszerzając interfejs Matcher o niestandardowe matchery, wszystkie problemy z typami znikają:

customMatchers/example.ts
loading...

Jeśli utworzyłeś niestandardowy asymetryczny matcher, możesz podobnie rozszerzyć typy expect w następujący sposób:

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

Welcome! How can I help?

WebdriverIO AI Copilot