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.
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
:
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:
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:
loading...
Pozwala to na wywołanie asercji w następujący sposób:
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ą:
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;
}
}
}