Spec-Zone.ru › Playwright

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();

Аргументы

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeChecked​

Проверяет, что Locator указывает на отмеченный элемент ввода.

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

const locator = page.getByLabel('Subscribe to newsletter');
await expect(locator).toBeChecked();

Аргументы

  • options Object (необязательно)
    • checked boolean (необязательно)

      Задаёт состояние, которое необходимо проверить. По умолчанию проверяется, что элемент ввода отмечен. Этот параметр нельзя использовать, если indeterminate имеет значение true.

    • indeterminate boolean (необязательно)

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeDisabled​

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

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

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

Аргументы

  • options Object (необязательно)
    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeEditable​

Проверяет, что Locator указывает на редактируемый элемент.

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

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

Аргументы

  • options Object (необязательно)
    • editable boolean (необязательно)

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeEmpty​

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

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

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

Аргументы

  • options Object (необязательно)
    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeEnabled​

Проверяет, что Locator указывает на включённый элемент.

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

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

Аргументы

  • options Object (необязательно)
    • enabled boolean (необязательно)

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeFocused​

Проверяет, что Locator указывает на DOM-узел, находящийся в фокусе.

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

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

Аргументы

  • options Object (необязательно)
    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toBeHidden​

Проверяет, что Locator либо не соответствует ни одному узлу DOM, либо соответствует невидимому узлу.

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

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

Аргументы

  • options Object (необязательно)
    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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 });

Аргументы

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

      Минимальная доля элемента, которая должна пересекаться с областью просмотра. Если значение равно 0, элемент должен пересекаться с областью просмотра хотя бы на какую-либо положительную величину. Значение по умолчанию — 0.

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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();

Аргументы

  • options Object (необязательно)
    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

    • visible boolean (необязательно)

Возвращает

  • Promise<void>

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 (необязательно)

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toContainText​

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

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

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

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

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

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

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

Аргументы

  • expected string | RegExp | Array<string | RegExp>

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

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

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторной попытки проверки или уже был прерван до её начала, проверка завершается с ошибкой без дальнейших повторных попыток.

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

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

    • useInnerText boolean (необязательно)

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

Возвращает

  • Promise<void>

Подробности

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

toHaveAccessibleDescription​

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

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

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

Аргументы

  • description string | RegExp

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

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

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveAccessibleErrorMessage​

Проверяет, что Locator указывает на элемент с заданным сообщением об ошибке aria.

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

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

Аргументы

  • errorMessage string | RegExp

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

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

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveAccessibleName​

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

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

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

Аргументы

  • name string | RegExp

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

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

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveAttribute(name, value)​

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

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

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

Аргументы

  • name string

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

  • value string | RegExp

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

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

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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

Аргументы

  • name string

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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>

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveCount​

Проверяет, что Locator соответствует точному количеству узлов DOM.

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

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

Аргументы

  • count number

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveCSS​

Проверяет, что Locator соответствует элементу с заданным вычисленным стилем CSS.

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

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

Аргументы

  • name string

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

  • value string | RegExp

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

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

    • pseudo "before" | "after" (необязательно)

      Псевдоэлемент, для которого считываются вычисленные стили.

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveId​

Проверяет, что Locator указывает на элемент с заданным идентификатором узла DOM.

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

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

Аргументы

  • id string | RegExp

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

toHaveJSProperty​

Проверяет, что Locator указывает на элемент с заданным свойством JavaScript. Это свойство может иметь примитивный тип или быть обычным сериализуемым объектом JavaScript.

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

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

Аргументы

  • name string

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

  • value Object

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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 (необязательно)

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, который может отменить проверку. Прерывание сигнала приводит к сбою проверки, как и тайм-аут: если сигнал прерван во время повторных попыток проверки или уже прерван до начала проверки, проверка завершается сбоем без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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.

Аргументы

  • name string | Array<string>

    Имя снимка. Должно иметь расширение .png или .webp; снимок экрана будет сохранен в соответствующем формате. Оба формата являются форматами без потерь.

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

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

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

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

      По умолчанию используется значение "disabled", отключающее анимации.

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

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

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

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

    • maskColor string (необязательно)

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

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

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

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

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

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

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

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

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

      По умолчанию используется значение "css".

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

    • stylePath string | Array<string> (необязательно)

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

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

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

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

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

Возвращает

  • Promise<void>

toHaveScreenshot(options)​

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

Снимок сохраняется в формате PNG. Чтобы сохранить его в формате WebP, передайте имя снимка с расширением .webp.

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

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

Обратите внимание, что проверки снимков экрана работают только с тестовым раннером Playwright.

Аргументы

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

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

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

      По умолчанию используется значение "disabled", отключающее анимации.

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

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

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

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

    • maskColor string (необязательно)

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

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

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

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

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

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

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

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

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

      По умолчанию используется значение "css".

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

    • stylePath string | Array<string> (необязательно)

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

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

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

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

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

Возвращает

  • Promise<void>

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>

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

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

Аргументы

  • expected string | RegExp | Array<string | RegExp>

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

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

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

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

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

    • useInnerText boolean (необязательно)

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

Возвращает

  • Promise<void>

Подробности

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

toHaveValue​

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

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

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

Аргументы

  • value string | RegExp

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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

Аргументы

  • values Array<string | RegExp>

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

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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 (необязательно)
    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

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 (необязательно)

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

    • signal AbortSignal (необязательно)

      Необязательный AbortSignal, с помощью которого можно отменить проверку. Отмена сигнала приводит к ошибке проверки так же, как и тайм-аут: если сигнал отменен во время повторных попыток проверки или уже отменен до ее начала, проверка завершается ошибкой без дальнейших повторных попыток.

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

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

Возвращает

  • Promise<void>

Свойства​

not​

Заставляет проверку проверять противоположное условие.

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

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

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

Тип

  • LocatorAssertions

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-locatorassertions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API