カスタムマッチャー
WebdriverIOは、Webおよびモバイルテストの実行に特化した特別な機能とカスタムマッチャーを備えたJestスタイルのexpect
アサーションライブラリを使用しています。マッチャーのライブラリは大きいですが、すべての可能な状況に対応できるわけではありません。そのため、既存のマッチャーをユーザー定義のカスタムマッチャーで拡張することが可能です。
現在、browser
オブジェクトに特化したマッチャーとelementインスタンスに特化したマッチャーの定義方法に違いはありませんが、将来的には変更される可能性があります。この開発に関する詳細情報はwebdriverio/expect-webdriverio#1408
をご確認ください。
カスタムブラウザマッチャー
カスタムブラウザマッチャーを登録するには、specファイルで直接、またはwdio.conf.js
のbefore
フックなどの一部として、expect
オブジェクトのextend
を呼び出します:
loading...
例に示すように、マッチャー関数は最初のパラメータとして期待されるオブジェクト(ブラウザやエレメントオブジェクトなど)を受け取り、2番目のパラメータとして期待値を受け取ります。次のようにマッチャーを使用できます:
loading...
カスタムエレメントマッチャー
カスタムブラウザマッチャーと同様に、エレメントマッチャーも違いはありません。以下は、エレメントのaria-labelをアサートするためのカスタムマッチャーを作成する例です:
loading...
これにより、次のようにアサーションを呼び出すことができます:
loading...
TypeScriptサポート
TypeScriptを使用している場合、カスタムマッチャーの型安全性を確保するためにもう一つのステップが必要です。Matcher
インターフェースをカスタムマッチャーで拡張することで、すべての型の問題がなくなります:
loading...
カスタム非対称マッチャーを作成した場合、同様にexpect
型を次のように拡張できます:
declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}