Expect
テストを書く際に、値が特定の条件を満たすかどうかを確認する必要があることがよくあります。expect
を使用すると、browser
、element
、mock
オブジェクトに対して異なる検証を行うための「マッチャー」にアクセスできます。
デフォルトオプション
以下のデフォルトオプションは、設定で設定されているwaitforTimeout
とwaitforInterval
オプションに接続されています。
アサーションに特定のタイムアウトを待機したい場合にのみ、以下のオプションを設定してくださ い。
{
wait: 2000, // 期待が成功するまで待機するミリ秒
interval: 100, // 試行間の間隔
}
異なるタイムアウトと間隔を選択したい場合は、これらのオプションを次のように設定します:
// wdio.conf.js
import { setOptions } from 'expect-webdriverio'
export const config = {
// ...
before () {
setOptions({ wait: 5000 })
},
// ...
}
マッチャーオプション
すべてのマッチャーはアサーションを修正できるいくつかのオプションを取ることができます:
コマンドオプション
名前 | 型 | 詳細 |
---|---|---|
wait | number | 期待が成功するまで待機する時間(ミリ秒)。デフォルト:3000 |
interval | number | 試行間の間隔。デフォルト:100 |
beforeAssertion | function | アサーションが行われる前に呼び出 される関数 |
afterAssertion | function | アサーション結果を含むアサーションが行われた後に呼び出される関数 |
message | string | アサーションエラーの前に付加するユーザーメッセージ |
文字列オプション
このオプションは、文字列がアサートされる場合にコマンドオプションに加えて適用できます。
名前 | 型 | 詳細 |
---|---|---|
ignoreCase | boolean | 実際の値と期待値の両方にtoLowerCase を適用する |
trim | boolean | 実際の値にtrim を適用する |
replace | Replacer | Replacer[] | 文字列/RegExpに一致する実際の値の部分を置き換えます。置換子は文字列または関数にすることができます。 |
containing | boolean | 実際の値が期待値を含むことを期待し、そうでなければ厳密に等しい。 |
asString | boolean | プロパティ値を強制的に文字列に変換するのに役立つ場合があります |
atStart | boolean | 実際の値が期待値で始まることを期待する |
atEnd | boolean | 実際の値が期待値で終わることを期待する |
atIndex | number | 実際の値が指定されたインデックスで期待値を持つことを期待する |
数値オプション
このオプションは、数値がアサートされる場合にコマンドオプションに加えて適用できます。
名前 | 型 | 詳細 |
---|---|---|
eq | number | 等しい |
lte | number | 以下 |
gte | number | 以上 |
HTMLエンティティの処理
HTMLエンティティはアンパサンド(&
)で始まりセミコロン(;
)で終わるテキスト(「文字列」)です。エンティティは、予約文字(そうでなければHTMLコードとして解釈される)や不可視文字(ノンブレークスペースなど、例えば
)を表示するためによく使用されます。
そのような要素を検索または操作するには、エンティティのユニコード相当を使用します。例:
<div data="Some Value">Some Text</div>
const myElem = await $('div[data="Some\u00a0Value"]')
await expect(myElem).toHaveAttribute('data', 'div[Some\u00a0Value')
await expect(myElem).toHaveText('Some\u00a0Text')
すべてのユニコード参照はHTML仕様で見つけることができます。
注意: ユニコードは大文字小文字を区別しないため、\u00a0
と\u00A0
の両方が機能します。ブラウザのインスペクトで要素を見つけるには、ユニコードからu
を削除します(例:div[data="Some\00a0Value"]
)。
ブラウザマッチャー
toHaveUrl
ブラウザが特定のページにあるかどうかを確認します。
使用方法
await browser.url('https://webdriver.io/')
await expect(browser).toHaveUrl('https://webdriver.io')
使用方法
await browser.url('https://webdriver.io/')
await expect(browser).toHaveUrl(expect.stringContaining('webdriver'))
toHaveTitle
ウェブサイトが特定のタイトルを持っているかどうかを確認します。
使用方法
await browser.url('https://webdriver.io/')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js')
await expect(browser).toHaveTitle(expect.stringContaining('WebdriverIO'))
toHaveClipboardText
ブラウザのクリップボードに特定のテキストが保存されているかどうかを確認します。
使用方法
import { Key } from 'webdriverio'
await browser.keys([Key.Ctrl, 'a'])
await browser.keys([Key.Ctrl, 'c'])
await expect(browser).toHaveClipboardText('some clipboard text')
await expect(browser).toHaveClipboardText(expect.stringContaining('clipboard text'))