Перейти к основному содержимому

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.33 locatorAssertions.toBeAttached

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

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

await expect(page.getByText('Hidden text')).toBeAttached();

Аргументы

  • options Object (опционально)
    • attached boolean (опционально)#

    • timeout number (опционально)#

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

Возвращает


toBeChecked

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

Убеждается, что Locator указывает на отмеченный элемент ввода.

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

const locator = page.getByLabel('Subscribe to newsletter');
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.

Возвращает


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.

Возвращает


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.

Возвращает


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.

Возвращает


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.

Возвращает


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.

Возвращает


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.

Возвращает


toBeInViewport

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

Убеждается, что Locator указывает на элемент, который пересекает область просмотра, согласно intersection observer 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.

Возвращает


toBeVisible

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

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

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

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

// Конкретный элемент виден.
await expect(page.getByText('Welcome')).toBeVisible();

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

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

Аргументы

  • options Object (опционально)
    • timeout number (опционально) Добавлено в: v1.18#

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

    • visible boolean (опционально) Добавлено в: v1.26#

Возвращает


toContainClass

Добавлено в: v1.52 locatorAssertions.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']);

Аргументы

  • expected string | Array<string>#

    Строка, содержащая ожидаемые имена классов, разделённые пробелами, или список таких строк, чтобы проверить несколько элементов.

  • options Object (опционально)

    • timeout number (опционально)#

      Время (в миллисекундах), в течение которого повторяются попытки выполнить проверку. Значение по умолчанию — timeout в TestConfig.expect.

Возвращает


toContainText

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

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

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

const locator = page.locator('.title');
await expect(locator).toContainText('substring');
await expect(locator).toContainText(/\d messages/);

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

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

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

<ul>
<li>Item Text 1</li>
<li>Item Text 2</li>
<li>Item Text 3</li>
</ul>

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

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

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

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

// ✖ Локатор указывает на внешний элемент списка, а не на элементы списка
await expect(page.locator('ul')).toContainText(['Text 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-узла.

Возвращает

Детали

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


toHaveAccessibleDescription

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

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

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

const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleDescription('Save results to disk');

Аргументы

  • description string | RegExp#

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

  • options Object (опционально)

    • ignoreCase boolean (опционально)#

      Выполнять ли сопоставление без учета регистра. Опция ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout number (опционально)#

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

Возвращает


toHaveAccessibleErrorMessage

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

Убеждается, что Locator указывает на элемент с заданным aria errormessage.

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

const locator = page.getByTestId('username-input');
await expect(locator).toHaveAccessibleErrorMessage('Username is required.');

Аргументы

  • errorMessage string | RegExp#

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

  • options Object (опционально)

    • ignoreCase boolean (опционально)#

      Выполнять ли сопоставление без учета регистра. Опция ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout number (опционально)#

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

Возвращает


toHaveAccessibleName

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

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

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

const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleName('Save to disk');

Аргументы

  • name string | RegExp#

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

  • options Object (опционально)

    • ignoreCase boolean (опционально)#

      Выполнять ли сопоставление без учета регистра. Опция ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если указано.

    • timeout number (опционально)#

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

Возвращает


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.

Возвращает


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.

Возвращает


toHaveClass

Добавлено в: v1.20 locatorAssertions.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']);

Аргументы

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

    Ожидаемый класс или RegExp или их список.

  • options Object (опционально)

    • timeout number (опционально) Добавлено в: v1.18#

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

Возвращает


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.

Возвращает


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.

Возвращает


toHaveId

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

Убеждается, что Locator указывает на элемент с заданным ID DOM-узла.

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

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

Аргументы

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

    ID элемента.

  • options Object (опционально)

    • timeout number (опционально) Добавлено в: v1.18#

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

Возвращает


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.

Возвращает


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.

Возвращает


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.

Возвращает


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.

Возвращает


toHaveText

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

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

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

const locator = page.locator('.title');
await expect(locator).toHaveText(/Welcome, Test User/);
await expect(locator).toHaveText(/Welcome, .*/);

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

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

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

<ul>
<li>Text 1</li>
<li>Text 2</li>
<li>Text 3</li>
</ul>

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

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

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

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

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

Аргументы

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

    Ожидаемая строка или регулярное выражение или их список.

  • options Object (опционально)

    • ignoreCase boolean (опционально) Добавлено в: v1.23#

      Выполнять ли сопоставление без учета регистра. Опция ignoreCase имеет приоритет над соответствующим флагом регулярного выражения, если он указан.

    • timeout number (опционально) Добавлено в: v1.18#

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

    • useInnerText boolean (опционально) Добавлено в: v1.18#

      Использовать ли element.innerText вместо element.textContent при получении текста DOM-узла.

Возвращает

Детали

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


toHaveValue

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

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

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

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

Аргументы

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

    Ожидаемое значение.

  • options Object (опционально)

    • timeout number (опционально) Добавлено в: v1.18#

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

Возвращает


toHaveValues

Добавлено в: v1.23 locatorAssertions.toHaveValues

Убеждается, что Locator указывает на мультивыбор/комбобокс (например, 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/]);

Аргументы

  • values Array<string | RegExp>#

    Ожидаемые в данный момент выбранные опции.

  • options Object (опционально)

    • timeout number (опционально)#

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

Возвращает


toMatchAriaSnapshot(expected)

Добавлено в: v1.49 locatorAssertions.toMatchAriaSnapshot(expected)

Утверждает, что целевой элемент соответствует заданному снимку доступности.

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

await page.goto('https://demo.playwright.dev/todomvc/');
await expect(page.locator('body')).toMatchAriaSnapshot(`
- heading "todos"
- textbox "What needs to be done?"
`);

Аргументы

  • expected string#
  • options Object (опционально)
    • timeout number (опционально)#

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

Возвращает


toMatchAriaSnapshot(options)

Добавлено в: v1.50 locatorAssertions.toMatchAriaSnapshot(options)

Утверждает, что целевой элемент соответствует заданному снимку доступности.

Снимок сохраняется в отдельный файл .aria.yml в месте, настроенном с помощью свойств expect.toMatchAriaSnapshot.pathTemplate и/или snapshotPathTemplate в конфигурационном файле.

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

await expect(page.locator('body')).toMatchAriaSnapshot();
await expect(page.locator('body')).toMatchAriaSnapshot({ name: 'body.aria.yml' });

Аргументы

  • options Object (опционально)
    • name string (опционально)#

      Имя снимка для сохранения в папке снимков, соответствующей этому тесту. Генерирует последовательные имена, если не указано.

    • timeout number (опционально)#

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

Возвращает


Свойства

not

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

Делает проверку утверждения на противоположное условие. Например, этот код проверяет, что Locator не содержит текст "error":

await expect(locator).not.toContainText('error');

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

expect(locator).not

Тип