PageAssertions
Класс [PageAssertions] предоставляет методы утверждений, которые могут быть использованы для проверки состояния [Page] в тестах.
import { test, expect } from '@playwright/test';
test('navigates to login', async ({ page }) => {
// ...
await page.getByText('Sign in').click();
await expect(page).toHaveURL(/.*\/login/);
});
Методы
toHaveScreenshot(name)
Добавлено в: v1.23Эта функция будет ждать, пока два последовательных скриншота страницы не дадут одинаковый результат, а затем сравнит последний скриншот с ожидаемым.
Использование
await expect(page).toHaveScreenshot('image.png');
Обратите внимание, что утверждения скриншотов работают только с тестовым раннером Playwright.
Аргументы
-
name
[string] | [Array]<[string]>#Имя снимка.
-
options
[Object] (опционально)-
animations
"disabled" | "allow" (опционально)#При установке в
"disabled"
, останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации получают разное обращение в зависимости от их продолжительности:- конечные анимации ускоряются до завершения, чтобы они вызвали событие
transitionend
. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.
По умолчанию
"disabled"
, что отключает анимации. - конечные анимации ускоряются до завершения, чтобы они вызвали событие
-
caret
"hide" | "initial" (опционально)#При установке в
"hide"
, скриншот скроет текстовый курсор. При установке в"initial"
, поведение текстового курсора не изменится. По умолчанию"hide"
. -
clip
[Object] (опционально)#-
x
[number]x-координата верхнего левого угла области обрезки
-
y
[number]y-координата верхнего левого угла области обрезки
-
width
[number]ширина области обрезки
-
height
[number]высота области обрезки
Объект, который определяет обрезку результирующего изображения.
-
-
fullPage
[boolean] (опционально)#Если true, делает скриншот всей прокручиваемой страницы, вместо текущей видимой области. По умолчанию
false
. -
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Эта функция будет ждать, пока два последовательных скриншота страницы не дадут одинаковый результат, а затем сравнит последний скриншот с ожидаемым.
Использование
await expect(page).toHaveScreenshot();
Обратите внимание, что утверждения скриншотов работают только с тестовым раннером Playwright.
Аргументы
options
[Object] (опционально)-
animations
"disabled" | "allow" (опционально)#При установке в
"disabled"
, останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации получают разное обращение в зависимости от их продолжительности:- конечные анимации ускоряются до завершения, чтобы они вызвали событие
transitionend
. - бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.
По умолчанию
"disabled"
, что отключает анимации. - конечные анимации ускоряются до завершения, чтобы они вызвали событие
-
caret
"hide" | "initial" (опционально)#При установке в
"hide"
, скриншот скроет текстовый курсор. При установке в"initial"
, поведение текстового курсора не изменится. По умолчанию"hide"
. -
clip
[Object] (опционально)#-
x
[number]x-координата верхнего левого угла области обрезки
-
y
[number]y-координата верхнего левого угла области обрезки
-
width
[number]ширина области обрезки
-
height
[number]высота области обрезки
Объект, который определяет обрезку результирующего изображения.
-
-
fullPage
[boolean] (опционально)#Если true, делает скриншот всей прокручиваемой страницы, вместо текущей видимой области. По умолчанию
false
. -
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]>#
toHaveTitle
Добавлено в: v1.20Убеждается, что страница имеет заданный заголовок.
Использование
await expect(page).toHaveTitle(/.*checkout/);
Аргументы
-
titleOrRegExp
[string] | [RegExp] Добавлено в: v1.18#Ожидаемый заголовок или регулярное выражение.
-
options
[Object] (опционально)-
timeout
[number] (опционально) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
toHaveURL
Добавлено в: v1.20Убеждается, что страница перешла на заданный URL.
Использование
// Проверка, что URL страницы равен 'https://playwright.dev/docs/intro' (включая строку запроса)
await expect(page).toHaveURL('https://playwright.dev/docs/intro');
// Проверка, что URL страницы содержит 'doc', за которым следует необязательная 's', за которой следует '/'
await expect(page).toHaveURL(/docs?\//);
// Проверка, что предикат удовлетворен
// Например: проверка строк запроса
await expect(page).toHaveURL(url => {
const params = url.searchParams;
return params.has('search') && params.has('options') && params.get('id') === '5';
});
Аргументы
-
url
[string] | [RegExp] | [function]([URL]):[boolean] Добавлено в: v1.18#Ожидаемая строка URL, регулярное выражение или предикат, получающий [URL] для совпадения. Когда baseURL предоставляется через параметры контекста и аргумент
url
является строкой, два значения объединяются с помощью конструктораnew URL()
и используются для сравнения с текущим URL браузера. -
options
[Object] (опционально)-
ignoreCase
[boolean] (опционально) Добавлено в: v1.44#Выполнять ли нечувствительное к регистру совпадение. Опция ignoreCase имеет приоритет над соответствующим параметром регулярного выражения, если указано. Предоставленный предикат игнорирует этот флаг.
-
timeout
[number] (опционально) Добавлено в: v1.18#Время для повторной попытки утверждения в миллисекундах. По умолчанию
timeout
вTestConfig.expect
.
-
Возвращает
- [Promise]<[void]>#
Свойства
not
Добавлено в: v1.20Делает проверку утверждения на противоположное условие. Например, этот код проверяет, что URL страницы не содержит "error"
:
await expect(page).not.toHaveURL('error');
Использование
expect(page).not
Тип
- [PageAssertions]