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
Проверяет, что Locator указывает на элемент, подключённый к документу или ShadowRoot.
Использование
await expect(page.getByText('Hidden text')).toBeAttached(); Аргументы
-
optionsObject (необязательно)-
attachedboolean (необязательно) -
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeChecked
Проверяет, что Locator указывает на отмеченный элемент ввода.
Использование
const locator = page.getByLabel('Subscribe to newsletter');
await expect(locator).toBeChecked(); Аргументы
-
optionsObject (необязательно)-
checkedboolean (необязательно)Задаёт состояние, которое необходимо проверить. По умолчанию проверяется, что элемент ввода отмечен. Этот параметр нельзя использовать, если indeterminate имеет значение true.
-
indeterminateboolean (необязательно)Проверяет, что элемент находится в неопределённом (смешанном) состоянии. Поддерживается только для флажков и переключателей. Этот параметр не может иметь значение true, если задано checked.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeDisabled
Проверяет, что Locator указывает на отключённый элемент. Элемент считается отключённым, если у него есть атрибут "disabled" или он отключён с помощью 'aria-disabled'. Обратите внимание: отключить с помощью атрибута "disabled" можно только собственные элементы управления, такие как HTML button, input, select, textarea, option, optgroup. Браузер игнорирует атрибут "disabled" у других элементов.
Использование
const locator = page.locator('button.submit');
await expect(locator).toBeDisabled(); Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeEditable
Проверяет, что Locator указывает на редактируемый элемент.
Использование
const locator = page.getByRole('textbox');
await expect(locator).toBeEditable(); Аргументы
-
optionsObject (необязательно)-
editableboolean (необязательно) -
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeEmpty
Проверяет, что Locator указывает на пустой редактируемый элемент или узел DOM, не содержащий текста.
Использование
const locator = page.locator('div.warning');
await expect(locator).toBeEmpty(); Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeEnabled
Проверяет, что Locator указывает на включённый элемент.
Использование
const locator = page.locator('button.submit');
await expect(locator).toBeEnabled(); Аргументы
-
optionsObject (необязательно)-
enabledboolean (необязательно) -
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeFocused
Проверяет, что Locator указывает на DOM-узел, находящийся в фокусе.
Использование
const locator = page.getByRole('textbox');
await expect(locator).toBeFocused(); Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeHidden
Проверяет, что Locator либо не соответствует ни одному узлу DOM, либо соответствует невидимому узлу.
Использование
const locator = page.locator('.my-element');
await expect(locator).toBeHidden(); Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeInViewport
Проверяет, что Locator указывает на элемент, который пересекается с областью просмотра согласно API Intersection Observer.
Использование
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 (необязательно)-
rationumber (необязательно)Минимальная доля элемента, которая должна пересекаться с областью просмотра. Если значение равно
0, элемент должен пересекаться с областью просмотра хотя бы на какую-либо положительную величину. Значение по умолчанию —0. -
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toBeVisible
Проверяет, что Locator указывает на прикреплённый и видимый узел DOM.
Чтобы проверить, что виден хотя бы один элемент из списка, используйте 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 (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect. -
visibleboolean (необязательно)
-
Возвращает
toContainClass
Проверяет, что Locator указывает на элемент с указанными классами 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 (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toContainText
Проверяет, что Locator указывает на элемент, содержащий заданный текст. При вычислении текстового содержимого элемента учитываются все вложенные элементы. В качестве значения также можно использовать регулярные выражения.
Использование
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>Ожидаемая подстрока, регулярное выражение или список таких значений.
-
optionsObject (необязательно)-
ignoreCaseboolean (необязательно)Нужно ли выполнять сопоставление без учёта регистра. Если задан параметр ignoreCase, он имеет приоритет над соответствующим флагом регулярного выражения.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять проверку. По умолчанию
timeoutвTestConfig.expect. -
useInnerTextboolean (необязательно)Использовать ли
element.innerTextвместоelement.textContentпри получении текста узла DOM.
-
Возвращает
Подробности
Если параметр expected является строкой, Playwright нормализует пробельные символы и переносы строк как в фактическом тексте, так и в ожидаемой строке перед сопоставлением. При использовании регулярного выражения фактический текст сопоставляется без изменений.
toHaveAccessibleDescription
Проверяет, что Locator указывает на элемент с заданным доступным описанием.
Использование
const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleDescription('Save results to disk'); Аргументы
-
Ожидаемое доступное описание.
-
optionsObject (необязательно)-
ignoreCaseboolean (необязательно)Выполнять ли сопоставление без учета регистра. Если задан параметр ignoreCase, он имеет приоритет над соответствующим флагом регулярного выражения.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveAccessibleErrorMessage
Проверяет, что Locator указывает на элемент с заданным сообщением об ошибке aria.
Использование
const locator = page.getByTestId('username-input');
await expect(locator).toHaveAccessibleErrorMessage('Username is required.'); Аргументы
-
Ожидаемое доступное сообщение об ошибке.
-
optionsObject (необязательно)-
ignoreCaseboolean (необязательно)Выполнять ли сопоставление без учета регистра. Если задан параметр ignoreCase, он имеет приоритет над соответствующим флагом регулярного выражения.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveAccessibleName
Проверяет, что Locator указывает на элемент с заданным доступным именем.
Использование
const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleName('Save to disk'); Аргументы
-
Ожидаемое доступное имя.
-
optionsObject (необязательно)-
ignoreCaseboolean (необязательно)Выполнять ли сопоставление без учета регистра. Если задан параметр ignoreCase, он имеет приоритет над соответствующим флагом регулярного выражения.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveAttribute(name, value)
Проверяет, что Locator указывает на элемент с заданным атрибутом.
Использование
const locator = page.locator('input');
await expect(locator).toHaveAttribute('type', 'text'); Аргументы
-
namestringИмя атрибута.
-
Ожидаемое значение атрибута.
-
optionsObject (необязательно)-
ignoreCaseboolean (необязательно)Выполнять ли сопоставление без учета регистра. Если задан параметр ignoreCase, он имеет приоритет над соответствующим флагом регулярного выражения.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveAttribute(name)
Проверяет, что Locator указывает на элемент с заданным атрибутом. Метод проверяет наличие атрибута.
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);
Аргументы
-
namestringИмя атрибута.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveClass
Проверяет, что Locator указывает на элемент с заданными классами 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|$)/); Если передан массив, метод проверяет, что список найденных элементов соответствует списку ожидаемых значений классов. Атрибут class каждого элемента сопоставляется с соответствующей строкой или регулярным выражением из массива:
const locator = page.locator('.list > .component');
await expect(locator).toHaveClass(['component', 'component selected', 'component']); Аргументы
-
expectedstring | RegExp | Array<string | RegExp>Ожидаемый класс, регулярное выражение или список таких значений.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveCount
Проверяет, что Locator соответствует точному количеству узлов DOM.
Использование
const list = page.locator('list > .component');
await expect(list).toHaveCount(3); Аргументы
-
countnumberОжидаемое количество.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveCSS
Проверяет, что Locator соответствует элементу с заданным вычисленным стилем CSS.
Использование
const locator = page.getByRole('button');
await expect(locator).toHaveCSS('display', 'flex'); Аргументы
-
namestringИмя свойства CSS.
-
Значение свойства CSS.
-
optionsObject (необязательно)-
pseudo"before" | "after" (необязательно)Псевдоэлемент, для которого считываются вычисленные стили.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveId
Проверяет, что Locator указывает на элемент с заданным идентификатором узла DOM.
Использование
const locator = page.getByRole('textbox');
await expect(locator).toHaveId('lastname'); Аргументы
-
Идентификатор элемента.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveJSProperty
Проверяет, что Locator указывает на элемент с заданным свойством JavaScript. Это свойство может иметь примитивный тип или быть обычным сериализуемым объектом JavaScript.
Использование
const locator = page.locator('.component');
await expect(locator).toHaveJSProperty('loaded', true); Аргументы
-
namestringИмя свойства.
-
valueObjectЗначение свойства.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveRole
Проверяет, что Locator указывает на элемент с заданной ролью ARIA.
Обратите внимание: роль сопоставляется как строка без учета иерархии ролей ARIA. Например, проверка роли суперкласса "checkbox" для элемента с ролью подкласса "switch" завершится сбоем.
Использование
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 (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время повторных попыток проверки в миллисекундах. По умолчанию
timeoutвTestConfig.expect.
-
Возвращает
toHaveScreenshot(name)
Эта функция будет ждать, пока два последовательных снимка экрана локатора не дадут одинаковый результат, а затем сравнит последний снимок экрана с ожидаемым.
Использование
const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot('image.png');
// Store the snapshot in the WebP format.
await expect(locator).toHaveScreenshot('image.webp'); Обратите внимание, что проверки снимков экрана работают только с тестовым раннером Playwright.
Аргументы
-
Имя снимка. Должно иметь расширение
.pngили.webp; снимок экрана будет сохранен в соответствующем формате. Оба формата являются форматами без потерь. -
optionsObject (необязательно)-
animations"disabled" | "allow" (необязательно)Если задано значение
"disabled", останавливает CSS-анимации, CSS-переходы и Web Animations. Анимации обрабатываются по-разному в зависимости от их длительности:- конечные анимации ускоряются до завершения, поэтому они вызовут событие
transitionend. - бесконечные анимации отменяются и возвращаются в исходное состояние, а после создания снимка экрана запускаются снова.
По умолчанию используется значение
"disabled", отключающее анимации. - конечные анимации ускоряются до завершения, поэтому они вызовут событие
-
caret"hide" | "initial" (необязательно)Если задано значение
"hide", курсор ввода текста будет скрыт на снимке экрана. Если задано значение"initial", поведение курсора ввода текста не изменится. По умолчанию используется значение"hide". -
maskArray<Locator> (необязательно)Укажите локаторы, которые следует замаскировать при создании снимка экрана. Поверх замаскированных элементов будет наложен розовый прямоугольник
#FF00FF(цвет можно изменить с помощью maskColor), полностью закрывающий их ограничивающую рамку. Маска применяется также к невидимым элементам; см. раздел Сопоставление только видимых элементов, чтобы отключить это поведение. -
maskColorstring (необязательно)Укажите цвет накладываемого прямоугольника для замаскированных элементов в формате цвета CSS. Цвет по умолчанию — розовый
#FF00FF. -
maxDiffPixelRationumber (необязательно)Допустимая доля отличающихся пикселей от общего числа пикселей, от
0до1. Значение по умолчанию можно настроить с помощьюTestConfig.expect. По умолчанию не задано. -
maxDiffPixelsnumber (необязательно)Допустимое количество пикселей, которые могут отличаться. Значение по умолчанию можно настроить с помощью
TestConfig.expect. По умолчанию не задано. -
omitBackgroundboolean (необязательно)Скрывает стандартный белый фон и позволяет делать снимки экрана с прозрачностью. Не применяется к изображениям
jpeg. По умолчанию используется значениеfalse. -
scale"css" | "device" (необязательно)Если задано значение
"css", на каждый CSS-пиксель страницы будет приходиться один пиксель снимка экрана. Это позволит уменьшить размер снимков экрана на устройствах с высоким разрешением. При использовании параметра"device"на каждый пиксель устройства будет приходиться один пиксель снимка, поэтому снимки экранов устройств с высоким разрешением будут вдвое больше или даже больше.По умолчанию используется значение
"css". -
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
stylePathstring | Array<string> (необязательно)Имя файла таблицы стилей, которую нужно применить при создании снимка экрана. Здесь можно скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы упростить создание повторяемых снимков экрана. Эта таблица стилей проникает в Shadow DOM и применяется к вложенным фреймам.
-
thresholdnumber (необязательно)Допустимое воспринимаемое различие цветов в цветовом пространстве YIQ между одним и тем же пикселем сравниваемых изображений: от нуля (строгое) до единицы (нестрогое). Значение по умолчанию можно настроить с помощью
TestConfig.expect. По умолчанию используется значение0.2. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout.
-
Возвращает
toHaveScreenshot(options)
Эта функция будет ждать, пока два последовательных снимка экрана локатора не дадут одинаковый результат, а затем сравнит последний снимок экрана с ожидаемым.
Снимок сохраняется в формате PNG. Чтобы сохранить его в формате WebP, передайте имя снимка с расширением .webp.
Использование
const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot(); Обратите внимание, что проверки снимков экрана работают только с тестовым раннером Playwright.
Аргументы
-
optionsObject (необязательно)-
animations"disabled" | "allow" (необязательно)Если задано значение
"disabled", останавливает CSS-анимации, CSS-переходы и Web Animations. Анимации обрабатываются по-разному в зависимости от их длительности:- конечные анимации ускоряются до завершения, поэтому они вызовут событие
transitionend. - бесконечные анимации отменяются и возвращаются в исходное состояние, а после создания снимка экрана запускаются снова.
По умолчанию используется значение
"disabled", отключающее анимации. - конечные анимации ускоряются до завершения, поэтому они вызовут событие
-
caret"hide" | "initial" (необязательно)Если задано значение
"hide", курсор ввода текста будет скрыт на снимке экрана. Если задано значение"initial", поведение курсора ввода текста не изменится. По умолчанию используется значение"hide". -
maskArray<Locator> (необязательно)Укажите локаторы, которые следует замаскировать при создании снимка экрана. Поверх замаскированных элементов будет наложен розовый прямоугольник
#FF00FF(цвет можно изменить с помощью maskColor), полностью закрывающий их ограничивающую рамку. Маска применяется также к невидимым элементам; см. раздел Сопоставление только видимых элементов, чтобы отключить это поведение. -
maskColorstring (необязательно)Укажите цвет накладываемого прямоугольника для замаскированных элементов в формате цвета CSS. Цвет по умолчанию — розовый
#FF00FF. -
maxDiffPixelRationumber (необязательно)Допустимая доля отличающихся пикселей от общего числа пикселей, от
0до1. Значение по умолчанию можно настроить с помощьюTestConfig.expect. По умолчанию не задано. -
maxDiffPixelsnumber (необязательно)Допустимое количество пикселей, которые могут отличаться. Значение по умолчанию можно настроить с помощью
TestConfig.expect. По умолчанию не задано. -
omitBackgroundboolean (необязательно)Скрывает стандартный белый фон и позволяет делать снимки экрана с прозрачностью. Не применяется к изображениям
jpeg. По умолчанию используется значениеfalse. -
scale"css" | "device" (необязательно)Если задано значение
"css", на каждый CSS-пиксель страницы будет приходиться один пиксель снимка экрана. Это позволит уменьшить размер снимков экрана на устройствах с высоким разрешением. При использовании параметра"device"на каждый пиксель устройства будет приходиться один пиксель снимка, поэтому снимки экранов устройств с высоким разрешением будут вдвое больше или даже больше.По умолчанию используется значение
"css". -
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
stylePathstring | Array<string> (необязательно)Имя файла таблицы стилей, которую нужно применить при создании снимка экрана. Здесь можно скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы упростить создание повторяемых снимков экрана. Эта таблица стилей проникает в Shadow DOM и применяется к вложенным фреймам.
-
thresholdnumber (необязательно)Допустимое воспринимаемое различие цветов в цветовом пространстве YIQ между одним и тем же пикселем сравниваемых изображений: от нуля (строгое) до единицы (нестрогое). Значение по умолчанию можно настроить с помощью
TestConfig.expect. По умолчанию используется значение0.2. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout.
-
Возвращает
toHaveText
Проверяет, что Locator указывает на элемент с заданным текстом. При вычислении текстового содержимого элемента учитываются все вложенные элементы. В качестве значения также можно использовать регулярные выражения.
Использование
const locator = page.locator('.title');
await expect(locator).toHaveText(/Welcome, Test User/);
await expect(locator).toHaveText(/Welcome, .*/); Если в качестве ожидаемого значения передан массив, проверяются следующие условия:
- Локатор разрешается в список элементов.
- Количество элементов равно количеству ожидаемых значений в массиве.
- Тексты элементов списка соответствуют ожидаемым значениям массива по порядку.
Например, рассмотрим следующий список:
<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>Ожидаемая строка, регулярное выражение или список таких значений.
-
optionsObject (необязательно)-
ignoreCaseboolean (необязательно)Следует ли выполнять сопоставление без учета регистра. Если задан параметр ignoreCase, он имеет приоритет над соответствующим флагом регулярного выражения.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout. -
useInnerTextboolean (необязательно)Следует ли использовать
element.innerTextвместоelement.textContentпри получении текста узла DOM.
-
Возвращает
Подробности
Если параметр expected является строкой, Playwright нормализует пробелы и разрывы строк как в фактическом тексте, так и в ожидаемой строке перед сопоставлением. При использовании регулярного выражения фактический текст сопоставляется без изменений.
toHaveValue
Проверяет, что Locator указывает на элемент с заданным значением ввода. В качестве значения также можно использовать регулярные выражения.
Использование
const locator = page.locator('input[type=number]');
await expect(locator).toHaveValue(/[0-9]/); Аргументы
-
Ожидаемое значение.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout.
-
Возвращает
toHaveValues
Проверяет, что Locator указывает на элемент с множественным выбором/combobox (то есть select с атрибутом multiple) и что выбраны указанные значения.
Использование
Например, для следующего элемента:
<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/]); Аргументы
-
Ожидаемые параметры, выбранные в данный момент.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout.
-
Возвращает
toMatchAriaSnapshot(expected)
Проверяет, что целевой элемент соответствует заданному снимку доступности.
Использование
await page.goto('https://demo.playwright.dev/todomvc/');
await expect(page.locator('body')).toMatchAriaSnapshot(`
- heading "todos"
- textbox "What needs to be done?"
`); Аргументы
-
expectedstring -
optionsObject (необязательно)-
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout.
-
Возвращает
toMatchAriaSnapshot(options)
Проверяет, что целевой элемент соответствует заданному снимку доступности.
Снимок сохраняется в отдельном файле .aria.yml в расположении, задаваемом свойствами expect.toMatchAriaSnapshot.pathTemplate и/или snapshotPathTemplate в файле конфигурации.
Использование
await expect(page.locator('body')).toMatchAriaSnapshot();
await expect(page.locator('body')).toMatchAriaSnapshot({ name: 'body.aria.yml' }); Аргументы
-
optionsObject (необязательно)-
namestring (необязательно)Имя снимка, сохраняемого в папке снимков для этого теста. Если имя не задано, генерируются последовательные имена.
-
signalAbortSignal (необязательно)Необязательный
AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток. -
timeoutnumber (необязательно)Время в миллисекундах, в течение которого следует повторять попытки проверки. По умолчанию в
TestConfig.expectиспользуется значениеtimeout.
-
Возвращает
Свойства
not
Заставляет проверку проверять противоположное условие.
Использование
Например, этот код проверяет, что Locator не содержит текст "error":
await expect(locator).not.toContainText('error'); Тип
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-locatorassertions