Skip to main content

LocatorAssertions

Класс [LocatorAssertions] предоставляет методы утверждений, которые можно использовать для проверки состояния [Locator] в тестах.

import { test, expect } from '@playwright/test';

test('статус становится отправленным', async ({ page }) => {
// ...
await page.getByRole('button').click();
await expect(page.locator('.status')).toHaveText('Submitted');
});

Методы

toBeAttached

Добавлено в: v1.33 locatorAssertions.toBeAttached

Убедитесь, что [Locator] указывает на элемент, который подключен к документу или ShadowRoot.

Использование

await expect(page.getByText('Скрытый текст')).toBeAttached();

Аргументы

  • options [Object] (необязательно)
    • attached [boolean] (необязательно)#

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeChecked

Добавлено в: v1.20 locatorAssertions.toBeChecked

Убедитесь, что [Locator] указывает на отмеченный элемент ввода.

Использование

const locator = page.getByLabel('Подписаться на рассылку');
await expect(locator).toBeChecked();

Аргументы

  • options [Object] (необязательно)
    • checked [boolean] (необязательно) Добавлено в: v1.18#

      Указывает состояние для проверки. По умолчанию проверяет, что элемент отмечен. Этот параметр не может использоваться, если indeterminate установлен в true.

    • indeterminate [boolean] (необязательно) Добавлено в: v1.50#

      Указывает, что элемент находится в неопределенном (смешанном) состоянии. Поддерживается только для флажков и радиокнопок. Этот параметр не может быть true, если указан checked.

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeDisabled

Добавлено в: v1.20 locatorAssertions.toBeDisabled

Убедитесь, что [Locator] указывает на отключенный элемент. Элемент считается отключенным, если у него есть атрибут "disabled" или он отключен через 'aria-disabled'. Обратите внимание, что только элементы управления, такие как HTML button, input, select, textarea, option, optgroup, могут быть отключены с помощью установки атрибута "disabled". Атрибут "disabled" на других элементах игнорируется браузером.

Использование

const locator = page.locator('button.submit');
await expect(locator).toBeDisabled();

Аргументы

  • options [Object] (необязательно)
    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeEditable

Добавлено в: v1.20 locatorAssertions.toBeEditable

Убедитесь, что [Locator] указывает на редактируемый элемент.

Использование

const locator = page.getByRole('textbox');
await expect(locator).toBeEditable();

Аргументы

  • options [Object] (необязательно)
    • editable [boolean] (необязательно) Добавлено в: v1.26#

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeEmpty

Добавлено в: v1.20 locatorAssertions.toBeEmpty

Убедитесь, что [Locator] указывает на пустой редактируемый элемент или на DOM-узел, который не содержит текста.

Использование

const locator = page.locator('div.warning');
await expect(locator).toBeEmpty();

Аргументы

  • options [Object] (необязательно)
    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeEnabled

Добавлено в: v1.20 locatorAssertions.toBeEnabled

Убедитесь, что [Locator] указывает на включенный элемент.

Использование

const locator = page.locator('button.submit');
await expect(locator).toBeEnabled();

Аргументы

  • options [Object] (необязательно)
    • enabled [boolean] (необязательно) Добавлено в: v1.26#

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeFocused

Добавлено в: v1.20 locatorAssertions.toBeFocused

Убедитесь, что [Locator] указывает на сфокусированный DOM-узел.

Использование

const locator = page.getByRole('textbox');
await expect(locator).toBeFocused();

Аргументы

  • options [Object] (необязательно)
    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeHidden

Добавлено в: v1.20 locatorAssertions.toBeHidden

Убедитесь, что [Locator] либо не разрешается в какой-либо DOM-узел, либо разрешается в невидимый узел.

Использование

const locator = page.locator('.my-element');
await expect(locator).toBeHidden();

Аргументы

  • options [Object] (необязательно)
    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeInViewport

Добавлено в: v1.31 locatorAssertions.toBeInViewport

Убедитесь, что [Locator] указывает на элемент, который пересекает область просмотра, согласно API наблюдателя пересечения.

Использование

const locator = page.getByRole('button');
// Убедитесь, что хотя бы часть элемента пересекает область просмотра.
await expect(locator).toBeInViewport();
// Убедитесь, что элемент полностью вне области просмотра.
await expect(locator).not.toBeInViewport();
// Убедитесь, что хотя бы половина элемента пересекает область просмотра.
await expect(locator).toBeInViewport({ ratio: 0.5 });

Аргументы

  • options [Object] (необязательно)
    • ratio [number] (необязательно)#

      Минимальное соотношение элемента, пересекающего область просмотра. Если равно 0, то элемент должен пересекать область просмотра при любом положительном соотношении. По умолчанию 0.

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toBeVisible

Добавлено в: v1.20 locatorAssertions.toBeVisible

Убедитесь, что [Locator] указывает на прикрепленный и видимый DOM-узел.

Чтобы проверить, что хотя бы один элемент из списка видим, используйте locator.first().

Использование

// Конкретный элемент видим.
await expect(page.getByText('Добро пожаловать')).toBeVisible();

// По крайней мере один элемент в списке видим.
await expect(page.getByTestId('todo-item').first()).toBeVisible();

// По крайней мере один из двух элементов видим, возможно, оба.
await expect(
page.getByRole('button', { name: 'Войти' })
.or(page.getByRole('button', { name: 'Зарегистрироваться' }))
.first()
).toBeVisible();

Аргументы

  • options [Object] (необязательно)
    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

    • visible [boolean] (необязательно) Добавлено в: v1.26#

Возвращает

  • [Promise]<[void]>#

toContainText

Добавлено в: v1.20 locatorAssertions.toContainText

Убедитесь, что [Locator] указывает на элемент, который содержит заданный текст. Все вложенные элементы будут учитываться при вычислении текстового содержимого элемента. Вы также можете использовать регулярные выражения для значения.

Использование

const locator = page.locator('.title');
await expect(locator).toContainText('подстрока');
await expect(locator).toContainText(/\d сообщения/);

Если вы передаете массив в качестве ожидаемого значения, ожидания следующие:

  1. Locator разрешается в список элементов.
  2. Количество элементов равно количеству ожидаемых значений в массиве.
  3. Элементы из списка имеют текст, соответствующий значениям ожидаемого массива, по одному, в порядке.

Например, рассмотрим следующий список:

<ul>
<li>Текст элемента 1</li>
<li>Текст элемента 2</li>
<li>Текст элемента 3</li>
</ul>

Посмотрим, как мы можем использовать утверждение:

// ✓ Содержит правильные элементы в правильном порядке
await expect(page.locator('ul > li')).toContainText(['Текст 1', 'Текст 3']);

// ✖ Неправильный порядок
await expect(page.locator('ul > li')).toContainText(['Текст 3', 'Текст 2']);

// ✖ Ни один элемент не содержит этот текст
await expect(page.locator('ul > li')).toContainText(['Некоторые 33']);

// ✖ Locator указывает на внешний элемент списка, а не на элементы списка
await expect(page.locator('ul')).toContainText(['Текст 3']);

Аргументы

  • expected [string] | [RegExp] | [Array]<[string] | [RegExp]> Добавлено в: v1.18#

    Ожидаемая подстрока или RegExp или список этих значений.

  • options [Object] (необязательно)

    • ignoreCase [boolean] (необязательно) Добавлено в: v1.23#

      Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

    • useInnerText [boolean] (необязательно) Добавлено в: v1.18#

      Указывает, следует ли использовать element.innerText вместо element.textContent при получении текста узла DOM.

Возвращает

  • [Promise]<[void]>#

Детали

Когда параметр expected является строкой, Playwright нормализует пробелы и переносы строк как в фактическом тексте, так и в ожидаемой строке перед сопоставлением. Когда используется регулярное выражение, фактический текст сопоставляется как есть.


toHaveAccessibleDescription

Добавлено в: v1.44 locatorAssertions.toHaveAccessibleDescription

Убедитесь, что [Locator] указывает на элемент с заданным доступным описанием.

Использование

const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleDescription('Сохранить результаты на диск');

Аргументы

  • description [string] | [RegExp]#

    Ожидаемое доступное описание.

  • options [Object] (необязательно)

    • ignoreCase [boolean] (необязательно)#

      Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveAccessibleErrorMessage

Добавлено в: v1.50 locatorAssertions.toHaveAccessibleErrorMessage

Убедитесь, что [Locator] указывает на элемент с заданным aria errormessage.

Использование

const locator = page.getByTestId('username-input');
await expect(locator).toHaveAccessibleErrorMessage('Имя пользователя обязательно.');

Аргументы

  • errorMessage [string] | [RegExp]#

    Ожидаемое доступное сообщение об ошибке.

  • options [Object] (необязательно)

    • ignoreCase [boolean] (необязательно)#

      Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveAccessibleName

Добавлено в: v1.44 locatorAssertions.toHaveAccessibleName

Убедитесь, что [Locator] указывает на элемент с заданным доступным именем.

Использование

const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleName('Сохранить на диск');

Аргументы

  • name [string] | [RegExp]#

    Ожидаемое доступное имя.

  • options [Object] (необязательно)

    • ignoreCase [boolean] (необязательно)#

      Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveAttribute(name, value)

Добавлено в: v1.20 locatorAssertions.toHaveAttribute(name, value)

Убедитесь, что [Locator] указывает на элемент с заданным атрибутом.

Использование

const locator = page.locator('input');
await expect(locator).toHaveAttribute('type', 'text');

Аргументы

  • name [string] Добавлено в: v1.18#

    Имя атрибута.

  • value [string] | [RegExp] Добавлено в: v1.18#

    Ожидаемое значение атрибута.

  • options [Object] (необязательно)

    • ignoreCase [boolean] (необязательно) Добавлено в: v1.40#

      Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveAttribute(name)

Добавлено в: v1.39 locatorAssertions.toHaveAttribute(name)

Убедитесь, что [Locator] указывает на элемент с заданным атрибутом. Метод будет утверждать наличие атрибута.

const locator = page.locator('input');
// Утверждение существования атрибута.
await expect(locator).toHaveAttribute('disabled');
await expect(locator).not.toHaveAttribute('open');

Использование

await expect(locator).toHaveAttribute(name);
await expect(locator).toHaveAttribute(name, options);

Аргументы

  • name [string]#

    Имя атрибута.

  • options [Object] (необязательно)

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveClass

Добавлено в: v1.20 locatorAssertions.toHaveClass

Убедитесь, что [Locator] указывает на элемент с заданными CSS-классами. Когда передается строка, она должна полностью соответствовать атрибуту class элемента. Чтобы сопоставить отдельные классы или выполнить частичное сопоставление, используйте регулярное выражение:

Использование

<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']);

Аргументы

  • expected [string] | [RegExp] | [Array]<[string] | [RegExp]> Добавлено в: v1.18#

    Ожидаемый класс или RegExp или список этих значений.

  • options [Object] (необязательно)

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveCount

Добавлено в: v1.20 locatorAssertions.toHaveCount

Убедитесь, что [Locator] разрешается в точное количество DOM-узлов.

Использование

const list = page.locator('list > .component');
await expect(list).toHaveCount(3);

Аргументы

  • count [number] Добавлено в: v1.18#

    Ожидаемое количество.

  • options [Object] (необязательно)

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveCSS

Добавлено в: v1.20 locatorAssertions.toHaveCSS

Убедитесь, что [Locator] разрешается в элемент с заданным вычисленным CSS-стилем.

Использование

const locator = page.getByRole('button');
await expect(locator).toHaveCSS('display', 'flex');

Аргументы

  • name [string] Добавлено в: v1.18#

    Имя CSS-свойства.

  • value [string] | [RegExp] Добавлено в: v1.18#

    Значение CSS-свойства.

  • options [Object] (необязательно)

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveId

Добавлено в: v1.20 locatorAssertions.toHaveId

Убедитесь, что [Locator] указывает на элемент с заданным идентификатором DOM-узла.

Использование

const locator = page.getByRole('textbox');
await expect(locator).toHaveId('lastname');

Аргументы

  • id [string] | [RegExp] Добавлено в: v1.18#

    Идентификатор элемента.

  • options [Object] (необязательно)

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveJSProperty

Добавлено в: v1.20 locatorAssertions.toHaveJSProperty

Убедитесь, что [Locator] указывает на элемент с заданным свойством JavaScript. Обратите внимание, что это свойство может быть примитивного типа, а также обычным сериализуемым объектом JavaScript.

Использование

const locator = page.locator('.component');
await expect(locator).toHaveJSProperty('loaded', true);

Аргументы

  • name [string] Добавлено в: v1.18#

    Имя свойства.

  • value [Object] Добавлено в: v1.18#

    Значение свойства.

  • options [Object] (необязательно)

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveRole

Добавлено в: v1.44 locatorAssertions.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 роль.

  • options [Object] (необязательно)

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveScreenshot(name)

Добавлено в: v1.23 locatorAssertions.toHaveScreenshot(name)

Эта функция будет ждать, пока два последовательных скриншота локатора не дадут одинаковый результат, а затем сравнит последний скриншот с ожиданием.

Использование

const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot('image.png');

Обратите внимание, что утверждения скриншотов работают только с тестовым раннером Playwright.

Аргументы

  • name [string] | [Array]<[string]>#

    Имя снимка.

  • options [Object] (необязательно)

    • animations "disabled" | "allow" (необязательно)#

      Если установить в "disabled", останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации обрабатываются по-разному в зависимости от их продолжительности:

      • конечные анимации ускоряются до завершения, чтобы они вызвали событие transitionend.
      • бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.

      По умолчанию "disabled", что отключает анимации.

    • caret "hide" | "initial" (необязательно)#

      Если установить в "hide", скриншот скроет текстовый курсор. Если установить в "initial", поведение текстового курсора не изменится. По умолчанию "hide".

    • mask [Array]<[Locator]> (необязательно)#

      Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым квадратом #FF00FF (настраиваемым с помощью maskColor), который полностью покрывает его ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Сопоставление только видимых элементов, чтобы отключить это.

    • maskColor [string] (необязательно) Добавлено в: v1.35#

      Укажите цвет наложения для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый #FF00FF.

    • maxDiffPixelRatio [number] (необязательно)#

      Допустимое соотношение пикселей, которые отличаются от общего количества пикселей, между 0 и 1. По умолчанию настраивается с помощью TestConfig.expect. По умолчанию не установлено.

    • maxDiffPixels [number] (необязательно)#

      Допустимое количество пикселей, которые могут отличаться. По умолчанию настраивается с помощью TestConfig.expect. По умолчанию не установлено.

    • omitBackground [boolean] (необязательно)#

      Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применяется к изображениям jpeg. По умолчанию false.

    • scale "css" | "device" (необязательно)#

      Если установить в "css", скриншот будет иметь один пиксель на каждый CSS-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование параметра "device" создаст один пиксель на каждый пиксель устройства, поэтому скриншоты для устройств с высоким разрешением будут в два раза больше или даже больше.

      По умолчанию "css".

    • stylePath [string] | [Array]<[string]> (необязательно) Добавлено в: v1.41#

      Имя файла, содержащего таблицу стилей, которую следует применить при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.

    • threshold [number] (необязательно)#

      Допустимая воспринимаемая разница в цвете в цветовом пространстве YIQ между одним и тем же пикселем в сравниваемых изображениях, от нуля (строго) до одного (свободно), по умолчанию настраивается с помощью TestConfig.expect. По умолчанию 0.2.

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveScreenshot(options)

Добавлено в: v1.23 locatorAssertions.toHaveScreenshot(options)

Эта функция будет ждать, пока два последовательных скриншота локатора не дадут одинаковый результат, а затем сравнит последний скриншот с ожиданием.

Использование

const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot();

Обратите внимание, что утверждения скриншотов работают только с тестовым раннером Playwright.

Аргументы

  • options [Object] (необязательно)
    • animations "disabled" | "allow" (необязательно)#

      Если установить в "disabled", останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации обрабатываются по-разному в зависимости от их продолжительности:

      • конечные анимации ускоряются до завершения, чтобы они вызвали событие transitionend.
      • бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.

      По умолчанию "disabled", что отключает анимации.

    • caret "hide" | "initial" (необязательно)#

      Если установить в "hide", скриншот скроет текстовый курсор. Если установить в "initial", поведение текстового курсора не изменится. По умолчанию "hide".

    • mask [Array]<[Locator]> (необязательно)#

      Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут перекрыты розовым квадратом #FF00FF (настраиваемым с помощью maskColor), который полностью покрывает его ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Сопоставление только видимых элементов, чтобы отключить это.

    • maskColor [string] (необязательно) Добавлено в: v1.35#

      Укажите цвет наложения для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый #FF00FF.

    • maxDiffPixelRatio [number] (необязательно)#

      Допустимое соотношение пикселей, которые отличаются от общего количества пикселей, между 0 и 1. По умолчанию настраивается с помощью TestConfig.expect. По умолчанию не установлено.

    • maxDiffPixels [number] (необязательно)#

      Допустимое количество пикселей, которые могут отличаться. По умолчанию настраивается с помощью TestConfig.expect. По умолчанию не установлено.

    • omitBackground [boolean] (необязательно)#

      Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применяется к изображениям jpeg. По умолчанию false.

    • scale "css" | "device" (необязательно)#

      Если установить в "css", скриншот будет иметь один пиксель на каждый CSS-пиксель на странице. Для устройств с высоким разрешением это позволит сохранить скриншоты небольшими. Использование параметра "device" создаст один пиксель на каждый пиксель устройства, поэтому скриншоты для устройств с высоким разрешением будут в два раза больше или даже больше.

      По умолчанию "css".

    • stylePath [string] | [Array]<[string]> (необязательно) Добавлено в: v1.41#

      Имя файла, содержащего таблицу стилей, которую следует применить при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Эта таблица стилей проникает в Shadow DOM и применяется к внутренним фреймам.

    • threshold [number] (необязательно)#

      Допустимая воспринимаемая разница в цвете в цветовом пространстве YIQ между одним и тем же пикселем в сравниваемых изображениях, от нуля (строго) до одного (свободно), по умолчанию настраивается с помощью TestConfig.expect. По умолчанию 0.2.

    • timeout [number] (необязательно)#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

Возвращает

  • [Promise]<[void]>#

toHaveText

Добавлено в: v1.20 locatorAssertions.toHaveText

Убедитесь, что [Locator] указывает на элемент с заданным текстом. Все вложенные элементы будут учитываться при вычислении текстового содержимого элемента. Вы также можете использовать регулярные выражения для значения.

Использование

const locator = page.locator('.title');
await expect(locator).toHaveText(/Добро пожаловать, Тестовый пользователь/);
await expect(locator).toHaveText(/Добро пожаловать, .*/);

Если вы передаете массив в качестве ожидаемого значения, ожидания следующие:

  1. Locator разрешается в список элементов.
  2. Количество элементов равно количеству ожидаемых значений в массиве.
  3. Элементы из списка имеют текст, соответствующий значениям ожидаемого массива, по одному, в порядке.

Например, рассмотрим следующий список:

<ul>
<li>Текст 1</li>
<li>Текст 2</li>
<li>Текст 3</li>
</ul>

Посмотрим, как мы можем использовать утверждение:

// ✓ Имеет правильные элементы в правильном порядке
await expect(page.locator('ul > li')).toHaveText(['Текст 1', 'Текст 2', 'Текст 3']);

// ✖ Неправильный порядок
await expect(page.locator('ul > li')).toHaveText(['Текст 3', 'Текст 2', 'Текст 1']);

// ✖ Последний элемент не соответствует
await expect(page.locator('ul > li')).toHaveText(['Текст 1', 'Текст 2', 'Текст']);

// ✖ Locator указывает на внешний элемент списка, а не на элементы списка
await expect(page.locator('ul')).toHaveText(['Текст 1', 'Текст 2', 'Текст 3']);

Аргументы

  • expected [string] | [RegExp] | [Array]<[string] | [RegExp]> Добавлено в: v1.18#

    Ожидаемая строка или RegExp или список этих значений.

  • options [Object] (необязательно)

    • ignoreCase [boolean] (необязательно) Добавлено в: v1.23#

      Указывает, следует ли выполнять регистронезависимое сопоставление. Параметр ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout [number] (необязательно) Добавлено в: v1.18#

      Время для повторной попытки утверждения в миллисекундах. По умолчанию timeout в TestConfig.expect.

    • useInnerText [boolean] (необязательно) Добавлено в: v1.18#

      Указывает, следует ли использовать element.innerText вместо element.textContent при получении текста узла DOM.

Возвращает

  • [Promise]<[void]>#

Детали

Когда параметр expected является строкой, Playwright нормализует пробелы и переносы строк как в фактическом тексте, так и в ожидаемой строке перед сопоставлением. Когда используется регулярное выражение, фактический текст сопоставляется как есть.


toHaveValue

Добавлено в: v1.20 locatorAssertions.toHaveValue

Убедитесь, что [Locator] указывает на элемент с заданным значением ввода. Вы также можете использовать регулярные выражения для значения.

Использование

const locator = page.locator('input[type=number]');
await expect(locator).toHaveValue(/[0-9]/);

Аргументы