メインコンテンツにスキップ

カスタムマッチャー

WebdriverIOは、Webおよびモバイルテストの実行に特化した特別な機能とカスタムマッチャーを備えたJestスタイルのexpectアサーションライブラリを使用しています。マッチャーのライブラリは大きいですが、すべての可能な状況に対応できるわけではありません。そのため、既存のマッチャーをユーザー定義のカスタムマッチャーで拡張することが可能です。

警告

現在、browserオブジェクトに特化したマッチャーとelementインスタンスに特化したマッチャーの定義方法に違いはありませんが、将来的には変更される可能性があります。この開発に関する詳細情報はwebdriverio/expect-webdriverio#1408をご確認ください。

カスタムブラウザマッチャー

カスタムブラウザマッチャーを登録するには、specファイルで直接、またはwdio.conf.jsbeforeフックなどの一部として、expectオブジェクトのextendを呼び出します:

customMatchers/example.ts
loading...

例に示すように、マッチャー関数は最初のパラメータとして期待されるオブジェクト(ブラウザやエレメントオブジェクトなど)を受け取り、2番目のパラメータとして期待値を受け取ります。次のようにマッチャーを使用できます:

customMatchers/example.ts
loading...

カスタムエレメントマッチャー

カスタムブラウザマッチャーと同様に、エレメントマッチャーも違いはありません。以下は、エレメントのaria-labelをアサートするためのカスタムマッチャーを作成する例です:

customMatchers/example.ts
loading...

これにより、次のようにアサーションを呼び出すことができます:

customMatchers/example.ts
loading...

TypeScriptサポート

TypeScriptを使用している場合、カスタムマッチャーの型安全性を確保するためにもう一つのステップが必要です。Matcherインターフェースをカスタムマッチャーで拡張することで、すべての型の問題がなくなります:

customMatchers/example.ts
loading...

カスタム非対称マッチャーを作成した場合、同様にexpect型を次のように拡張できます:

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

Welcome! How can I help?

WebdriverIO AI Copilot