LocatorAssertions
LocatorAssertions クラスは、テストで Locator の状態についてアサーションを行うために使用できるアサーションメソッドを提供します。
import { test, expect } from '@playwright/test';
test('status becomes submitted', async ({ page }) => {
// ...
await page.getByRole('button').click();
await expect(page.locator('.status')).toHaveText('Submitted');
});
メソッド
toBeAttached
追加バージョン: v1.33Locator が Document または ShadowRoot に 接続されている 要素を指していることを保証します。
使用法
await expect(page.getByText('Hidden text')).toBeAttached();
引数
optionsObject (optional)-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
戻り値
toBeChecked
追加バージョン: v1.20Locator がチェックされた入力を指していることを保証します。
使用法
const locator = page.getByLabel('Subscribe to newsletter');
await expect(locator).toBeChecked();
引数
optionsObject (optional)-
checkedboolean (optional)追加: v1.18#アサートする状態を提供します。デフォルトでは、入力がチェックされていることをアサートします。indeterminate が true に設定されている場合、このオプションは使用できません。
-
indeterminateboolean (optional)追加バージョン: v1.50#要素が不確定 (混在) 状態であることをアサートします。チェックボックスとラジオボタンのみがサポートされます。checked が提供されている場合、このオプションは true にできません。
-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toBeDisabled
追加バージョン: v1.20Locator が無効な要素を指していることを保証します。「disabled」属性を持つか、'aria-disabled' 経由で無効になっている場合、要素は無効になります。HTML button、input、select、textarea、option、optgroup などのネイティブコントロール要素のみが「disabled」属性を設定することで無効にできることに注意してください。他の要素の「disabled」属性はブラウザによって無視されます。
使用法
const locator = page.locator('button.submit');
await expect(locator).toBeDisabled();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toBeEditable
追加バージョン: v1.20Locator が編集可能な要素を指していることを保証します。
使用法
const locator = page.getByRole('textbox');
await expect(locator).toBeEditable();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
戻り値
toBeEmpty
追加バージョン: v1.20Locator が空の編集可能な要素またはテキストのない DOM ノードを指していることを保証します。
使用法
const locator = page.locator('div.warning');
await expect(locator).toBeEmpty();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toBeEnabled
追加バージョン: v1.20Locator が有効な要素を指していることを保証します。
使用法
const locator = page.locator('button.submit');
await expect(locator).toBeEnabled();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
戻り値
toBeFocused
追加バージョン: v1.20Locator がフォーカスされた DOM ノードを指していることを保証します。
使用法
const locator = page.getByRole('textbox');
await expect(locator).toBeFocused();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toBeHidden
追加バージョン: v1.20Locator がどの DOM ノードにも解決されないか、非表示のノードに解決されることを保証します。
使用法
const locator = page.locator('.my-element');
await expect(locator).toBeHidden();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toBeInViewport
追加バージョン: v1.31Locator が、intersection observer API に従って、ビューポートと交差する要素を指していることを保証します。
使用法
const locator = page.getByRole('button');
// Make sure at least some part of element intersects viewport.
await expect(locator).toBeInViewport();
// Make sure element is fully outside of viewport.
await expect(locator).not.toBeInViewport();
// Make sure that at least half of the element intersects viewport.
await expect(locator).toBeInViewport({ ratio: 0.5 });
引数
optionsObject (optional)-
要素がビューポートと交差する最小比率。
0の場合、要素は任意の正の比率でビューポートと交差する必要があります。デフォルトは0です。 -
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toBeVisible
追加バージョン: v1.20Locator がアタッチされ、表示されている DOM ノードを指していることを保証します。
リスト内の少なくとも 1 つの要素が表示されていることを確認するには、locator.first() を使用します。
使用法
// A specific element is visible.
await expect(page.getByText('Welcome')).toBeVisible();
// At least one item in the list is visible.
await expect(page.getByTestId('todo-item').first()).toBeVisible();
// At least one of the two elements is visible, possibly both.
await expect(
page.getByRole('button', { name: 'Sign in' })
.or(page.getByRole('button', { name: 'Sign up' }))
.first()
).toBeVisible();
引数
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toContainClass
追加バージョン: v1.52Locator が指定された CSS クラスを持つ要素を指していることを保証します。アサートされた値のすべてのクラス (スペースで区切られた) は、任意の順序で Element.classList に存在する必要があります。
使用法
<div class='middle selected row' id='component'></div>
const locator = page.locator('#component');
await expect(locator).toContainClass('middle selected row');
await expect(locator).toContainClass('selected');
await expect(locator).toContainClass('row middle');
配列が渡される場合、このメソッドは、特定された要素のリストが対応する期待されるクラスリストのリストと一致することをアサートします。各要素の class 属性は、配列内の対応するクラスと一致します。
<div class='list'>
<div class='component inactive'></div>
<div class='component active'></div>
<div class='component inactive'></div>
</div>
const locator = page.locator('.list > .component');
await expect(locator).toContainClass(['inactive', 'active', 'inactive']);
引数
-
expectedstring | Array<string>#スペースで区切られた期待されるクラス名を含む文字列、または複数の要素をアサートするためのそのような文字列のリスト。
-
optionsObject (optional)-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toContainText
追加バージョン: v1.20Locator が指定されたテキストを含む要素を指していることを保証します。要素のテキストコンテンツを計算するとき、すべてのネストされた要素が考慮されます。値に正規表現も使用できます。
使用法
const locator = page.locator('.title');
await expect(locator).toContainText('substring');
await expect(locator).toContainText(/\d messages/);
配列を期待値として渡した場合、期待値は次のとおりです。
- Locator は要素のリストに解決されます。
- このリストの**サブセット**の要素は、それぞれ期待される配列のテキストを含みます。
- 一致する要素のサブセットは、期待される配列と同じ順序になります。
- 期待される配列の各テキスト値は、リスト内のいずれかの要素によって一致します。
たとえば、次のリストを考えます。
<ul>
<li>Item Text 1</li>
<li>Item Text 2</li>
<li>Item Text 3</li>
</ul>
アサーションをどのように使用できるか見てみましょう。
// ✓ Contains the right items in the right order
await expect(page.locator('ul > li')).toContainText(['Text 1', 'Text 3']);
// ✖ Wrong order
await expect(page.locator('ul > li')).toContainText(['Text 3', 'Text 2']);
// ✖ No item contains this text
await expect(page.locator('ul > li')).toContainText(['Some 33']);
// ✖ Locator points to the outer list element, not to the list items
await expect(page.locator('ul')).toContainText(['Text 3']);
引数
-
expectedstring | RegExp | Array<string | RegExp>追加: v1.18#期待される部分文字列または正規表現、またはそれらのリスト。
-
optionsObject (optional)-
ignoreCaseboolean (optional)追加日: v1.23#大文字小文字を区別しない一致を実行するかどうか。ignoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。 -
useInnerTextboolean (optional)追加: v1.18#DOM ノードのテキストを取得するときに
element.textContentの代わりにelement.innerTextを使用するかどうか。
-
戻り値
詳細
expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。
toHaveAccessibleDescription
追加バージョン: v1.44Locator が指定された アクセシブルな説明 を持つ要素を指していることを保証します。
使用法
const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleDescription('Save results to disk');
引数
-
期待されるアクセシブルな説明。
-
optionsObject (optional)-
ignoreCaseboolean (optional)#大文字小文字を区別しない一致を実行するかどうか。ignoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveAccessibleErrorMessage
追加バージョン: v1.50Locator が指定された aria errormessage を持つ要素を指していることを保証します。
使用法
const locator = page.getByTestId('username-input');
await expect(locator).toHaveAccessibleErrorMessage('Username is required.');
引数
-
期待されるアクセシブルなエラーメッセージ。
-
optionsObject (optional)-
ignoreCaseboolean (optional)#大文字小文字を区別しない一致を実行するかどうか。ignoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveAccessibleName
追加バージョン: v1.44Locator が指定された アクセシブルな名前 を持つ要素を指していることを保証します。
使用法
const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleName('Save to disk');
引数
-
期待されるアクセシブルな名前。
-
optionsObject (optional)-
ignoreCaseboolean (optional)#大文字小文字を区別しない一致を実行するかどうか。ignoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveAttribute(name, value)
追加バージョン: v1.20Locator が指定された属性を持つ要素を指していることを保証します。
使用法
const locator = page.locator('input');
await expect(locator).toHaveAttribute('type', 'text');
引数
-
属性名。
-
valuestring | RegExp追加: v1.18#期待される属性値。
-
optionsObject (optional)-
ignoreCaseboolean (optional)追加されたバージョン: v1.40#大文字小文字を区別しない一致を実行するかどうか。ignoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveAttribute(name)
追加: v1.39Locator が指定された属性を持つ要素を指していることを保証します。このメソッドは属性の存在をアサートします。
const locator = page.locator('input');
// Assert attribute existence.
await expect(locator).toHaveAttribute('disabled');
await expect(locator).not.toHaveAttribute('open');
使用法
await expect(locator).toHaveAttribute(name);
await expect(locator).toHaveAttribute(name, options);
引数
-
属性名。
-
optionsObject (optional)-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveClass
追加バージョン: v1.20Locator が指定された CSS クラスを持つ要素を指していることを保証します。文字列が指定された場合、要素の class 属性と完全に一致する必要があります。個々のクラスを一致させるには、expect(locator).toContainClass() を使用します。
使用法
<div class='middle selected row' id='component'></div>
const locator = page.locator('#component');
await expect(locator).toHaveClass('middle selected row');
await expect(locator).toHaveClass(/(^|\s)selected(\s|$)/);
配列が渡される場合、このメソッドは、特定された要素のリストが、期待されるクラス値の対応するリストと一致することをアサートします。各要素のクラス属性は、配列内の対応する文字列または正規表現と一致します。
const locator = page.locator('.list > .component');
await expect(locator).toHaveClass(['component', 'component selected', 'component']);
引数
-
expectedstring | RegExp | Array<string | RegExp>追加: v1.18#期待されるクラスまたは正規表現、またはそれらのリスト。
-
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveCount
追加バージョン: v1.20Locator が正確な数の DOM ノードに解決されることを保証します。
使用法
const list = page.locator('list > .component');
await expect(list).toHaveCount(3);
引数
-
期待される数。
-
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveCSS
追加バージョン: v1.20Locator が指定された計算済み CSS スタイルを持つ要素に解決されることを保証します。
使用法
const locator = page.getByRole('button');
await expect(locator).toHaveCSS('display', 'flex');
引数
-
CSS プロパティ名。
-
valuestring | RegExp追加: v1.18#CSS プロパティ値。
-
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveId
追加バージョン: v1.20Locator が指定された DOM ノード ID を持つ要素を指していることを保証します。
使用法
const locator = page.getByRole('textbox');
await expect(locator).toHaveId('lastname');
引数
-
要素 ID。
-
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveJSProperty
追加バージョン: v1.20Locator が指定された JavaScript プロパティを持つ要素を指していることを保証します。このプロパティは、プリミティブ型だけでなく、プレーンなシリアライズ可能な JavaScript オブジェクトでもかまいません。
使用法
const locator = page.locator('.component');
await expect(locator).toHaveJSProperty('loaded', true);
引数
-
プロパティ名。
-
プロパティ値。
-
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveRole
追加バージョン: v1.44Locator が指定された ARIA ロール を持つ要素を指していることを保証します。
ロールは文字列として一致し、ARIA ロール階層は無視されることに注意してください。たとえば、サブクラスロール "switch" を持つ要素に対してスーパークラスロール "checkbox" をアサートすると失敗します。
使用法
const locator = page.getByTestId('save-button');
await expect(locator).toHaveRole('button');
引数
-
role"alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem"#必須のariaロール。
-
optionsObject (optional)-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveScreenshot(name)
追加日: v1.23この関数は、2 つの連続するロケータースクリーンショットが同じ結果を返すまで待機し、最後のスクリーンショットと期待値を比較します。
使用法
const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot('image.png');
スクリーンショットのアサーションは Playwright テストランナーでのみ機能することに注意してください。
引数
-
スナップショット名。
-
optionsObject (optional)-
animations"disabled" | "allow" (optional)#"disabled"に設定すると、CSSアニメーション、CSSトランジション、Webアニメーションが停止します。アニメーションは期間によって異なる扱いを受けます。- 有限のアニメーションは完了まで早送りされ、
transitionendイベントが発生します。 - 無限のアニメーションは初期状態にキャンセルされ、スクリーンショットの後に再生されます。
アニメーションを無効にする
"disabled"がデフォルトです。 - 有限のアニメーションは完了まで早送りされ、
-
caret"hide" | "initial" (optional)#"hide"に設定すると、スクリーンショットはテキストキャレットを非表示にします。"initial"に設定すると、テキストキャレットの動作は変更されません。デフォルトは"hide"です。 -
maskArray<Locator> (optional)#スクリーンショットを撮るときにマスクするロケーターを指定します。マスクされた要素は、境界ボックスを完全に覆うピンク色のボックス
#FF00FF( maskColor でカスタマイズ) で重ねて表示されます。マスクは非表示の要素にも適用されます。これを無効にするには、 可視要素のみを照合する を参照してください。 -
maskColorstring (オプション)追加されたバージョン: v1.35#CSSカラー形式で、マスクされた要素のオーバーレイボックスの色を指定します。デフォルトの色はピンク
#FF00FFです。 -
maxDiffPixelRationumber (optional)#異なるピクセルが総ピクセル数に対して許容される比率で、
0から1の間です。デフォルトはTestConfig.expectで設定可能です。デフォルトでは未設定です。 -
maxDiffPixelsnumber (optional)#異なる可能性がある許容されるピクセル数です。デフォルトは
TestConfig.expectで設定可能です。デフォルトでは未設定です。 -
omitBackgroundboolean (optional)#デフォルトの白い背景を非表示にし、透過性のあるスクリーンショットをキャプチャできるようにします。
jpeg画像には適用されません。デフォルトはfalseです。 -
scale"css" | "device" (optional)#"css"に設定すると、スクリーンショットはページ上の各CSSピクセルにつき1ピクセルになります。高DPIデバイスの場合、これによりスクリーンショットが小さく保たれます。"device"オプションを使用すると、各デバイスピクセルにつき1ピクセルが生成されるため、高DPIデバイスのスクリーンショットは2倍以上大きくなります。デフォルトは
"css"です。 -
stylePathstring | Array<string> (オプション)追加日: v1.41#スクリーンショットを撮るときに適用するスタイルシートを含むファイル名。ここでは、動的要素を非表示にしたり、要素を非表示にしたり、プロパティを変更したりして、繰り返し可能なスクリーンショットを作成できます。このスタイルシートは Shadow DOM を通過し、内部フレームに適用されます。
-
比較される画像内の同じピクセル間の、YIQ 色空間における許容される知覚的な色差で、ゼロ(厳密)から1(緩やか)の間です。デフォルトは
TestConfig.expectで設定可能です。デフォルトは0.2です。 -
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveScreenshot(options)
追加日: v1.23この関数は、2 つの連続するロケータースクリーンショットが同じ結果を返すまで待機し、最後のスクリーンショットと期待値を比較します。
使用法
const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot();
スクリーンショットのアサーションは Playwright テストランナーでのみ機能することに注意してください。
引数
optionsObject (optional)-
animations"disabled" | "allow" (optional)#"disabled"に設定すると、CSSアニメーション、CSSトランジション、Webアニメーションが停止します。アニメーションは期間によって異なる扱いを受けます。- 有限のアニメーションは完了まで早送りされ、
transitionendイベントが発生します。 - 無限のアニメーションは初期状態にキャンセルされ、スクリーンショットの後に再生されます。
アニメーションを無効にする
"disabled"がデフォルトです。 - 有限のアニメーションは完了まで早送りされ、
-
caret"hide" | "initial" (optional)#"hide"に設定すると、スクリーンショットはテキストキャレットを非表示にします。"initial"に設定すると、テキストキャレットの動作は変更されません。デフォルトは"hide"です。 -
maskArray<Locator> (optional)#スクリーンショットを撮るときにマスクするロケーターを指定します。マスクされた要素は、境界ボックスを完全に覆うピンク色のボックス
#FF00FF( maskColor でカスタマイズ) で重ねて表示されます。マスクは非表示の要素にも適用されます。これを無効にするには、 可視要素のみを照合する を参照してください。 -
maskColorstring (オプション)追加されたバージョン: v1.35#CSSカラー形式で、マスクされた要素のオーバーレイボックスの色を指定します。デフォルトの色はピンク
#FF00FFです。 -
maxDiffPixelRationumber (optional)#異なるピクセルが総ピクセル数に対して許容される比率で、
0から1の間です。デフォルトはTestConfig.expectで設定可能です。デフォルトでは未設定です。 -
maxDiffPixelsnumber (optional)#異なる可能性がある許容されるピクセル数です。デフォルトは
TestConfig.expectで設定可能です。デフォルトでは未設定です。 -
omitBackgroundboolean (optional)#デフォルトの白い背景を非表示にし、透過性のあるスクリーンショットをキャプチャできるようにします。
jpeg画像には適用されません。デフォルトはfalseです。 -
scale"css" | "device" (optional)#"css"に設定すると、スクリーンショットはページ上の各CSSピクセルにつき1ピクセルになります。高DPIデバイスの場合、これによりスクリーンショットが小さく保たれます。"device"オプションを使用すると、各デバイスピクセルにつき1ピクセルが生成されるため、高DPIデバイスのスクリーンショットは2倍以上大きくなります。デフォルトは
"css"です。 -
stylePathstring | Array<string> (オプション)追加日: v1.41#スクリーンショットを撮るときに適用するスタイルシートを含むファイル名。ここでは、動的要素を非表示にしたり、要素を非表示にしたり、プロパティを変更したりして、繰り返し可能なスクリーンショットを作成できます。このスタイルシートは Shadow DOM を通過し、内部フレームに適用されます。
-
比較される画像内の同じピクセル間の、YIQ 色空間における許容される知覚的な色差で、ゼロ(厳密)から1(緩やか)の間です。デフォルトは
TestConfig.expectで設定可能です。デフォルトは0.2です。 -
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveText
追加バージョン: v1.20Locator が指定されたテキストを持つ要素を指していることを保証します。要素のテキストコンテンツを計算するとき、すべてのネストされた要素が考慮されます。値に正規表現も使用できます。
使用法
const locator = page.locator('.title');
await expect(locator).toHaveText(/Welcome, Test User/);
await expect(locator).toHaveText(/Welcome, .*/);
配列を期待値として渡した場合、期待値は次のとおりです。
- Locator は要素のリストに解決されます。
- 要素の数は、配列内の期待値の数と等しくなります。
- リスト内の要素は、期待される配列の値を1つずつ順番に一致させます。
たとえば、次のリストを考えます。
<ul>
<li>Text 1</li>
<li>Text 2</li>
<li>Text 3</li>
</ul>
アサーションをどのように使用できるか見てみましょう。
// ✓ Has the right items in the right order
await expect(page.locator('ul > li')).toHaveText(['Text 1', 'Text 2', 'Text 3']);
// ✖ Wrong order
await expect(page.locator('ul > li')).toHaveText(['Text 3', 'Text 2', 'Text 1']);
// ✖ Last item does not match
await expect(page.locator('ul > li')).toHaveText(['Text 1', 'Text 2', 'Text']);
// ✖ Locator points to the outer list element, not to the list items
await expect(page.locator('ul')).toHaveText(['Text 1', 'Text 2', 'Text 3']);
引数
-
expectedstring | RegExp | Array<string | RegExp>追加: v1.18#期待される文字列または正規表現、またはそれらのリスト。
-
optionsObject (optional)-
ignoreCaseboolean (optional)追加日: v1.23#大文字小文字を区別しない一致を実行するかどうか。ignoreCase オプションは、指定された場合、対応する正規表現フラグよりも優先されます。
-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。 -
useInnerTextboolean (optional)追加: v1.18#DOM ノードのテキストを取得するときに
element.textContentの代わりにelement.innerTextを使用するかどうか。
-
戻り値
詳細
expected パラメータが文字列の場合、Playwright は、一致する前に、実際のテキストと期待される文字列の両方で空白と改行を正規化します。正規表現を使用する場合、実際のテキストはそのまま一致します。
toHaveValue
追加バージョン: v1.20Locator が指定された入力値を持つ要素を指していることを保証します。値に正規表現も使用できます。
使用法
const locator = page.locator('input[type=number]');
await expect(locator).toHaveValue(/[0-9]/);
引数
-
valuestring | RegExp追加: v1.18#期待される値。
-
optionsObject (optional)-
timeoutnumber (optional)追加: v1.18#アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toHaveValues
追加日: v1.23Locator が複数選択/コンボボックス (つまり、multiple 属性を持つ select) を指しており、指定された値が選択されていることを保証します。
使用法
たとえば、次の要素を考えます。
<select id="favorite-colors" multiple>
<option value="R">Red</option>
<option value="G">Green</option>
<option value="B">Blue</option>
</select>
const locator = page.locator('id=favorite-colors');
await locator.selectOption(['R', 'G']);
await expect(locator).toHaveValues([/R/, /G/]);
引数
-
valuesArray<string | RegExp>#現在選択されている期待されるオプション。
-
optionsObject (optional)-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toMatchAriaSnapshot(expected)
追加バージョン: v1.49ターゲット要素が指定された アクセシビリティスナップショット と一致することをアサートします。
使用法
await page.goto('https://demo.playwright.dev/todomvc/');
await expect(page.locator('body')).toMatchAriaSnapshot(`
- heading "todos"
- textbox "What needs to be done?"
`);
引数
expectedstring#optionsObject (optional)-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
toMatchAriaSnapshot(options)
追加バージョン: v1.50ターゲット要素が指定された アクセシビリティスナップショット と一致することをアサートします。
スナップショットは、設定ファイルの expect.toMatchAriaSnapshot.pathTemplate および/または snapshotPathTemplate プロパティで設定された場所に、個別の .aria.yml ファイルとして保存されます。
使用法
await expect(page.locator('body')).toMatchAriaSnapshot();
await expect(page.locator('body')).toMatchAriaSnapshot({ name: 'body.aria.yml' });
引数
optionsObject (optional)-
このテストに対応するスナップショットフォルダに保存するスナップショットの名前。指定しない場合は連番の名前が生成されます。
-
アサーションを再試行するミリ秒単位の時間。
TestConfig.expectのtimeoutがデフォルトです。
-
戻り値
プロパティ
not
追加バージョン: v1.20アサーションが反対の条件をチェックするようにします。たとえば、このコードは Locator がテキスト "error" を含まないことをテストします。
await expect(locator).not.toContainText('error');
使用法
expect(locator).not
タイプ