Параметры сервиса
Параметры сервиса - это опции, которые можно установить при создании экземпляра сервиса и которые будут использоваться для каждого вызова метода.
// wdio.conf.(js|ts)
export const config = {
// ...
// =====
// Setup
// =====
services: [
[
"visual",
{
// The options
},
],
],
// ...
};
Параметры по умолчанию
addressBarShadowPadding
- Тип:
number
- Обязательный: Нет
- По умолчанию:
6
- Поддерживаемые контексты приложения: Web
Отступ, который необходимо добавить к адресной строке на iOS и Android для правильного обрезания области просмотра.
autoElementScroll
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
true
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview)
Этот параметр позволяет отключить автоматическую прокрутку элемента в поле зрения при создании снимка экрана элемента.
addIOSBezelCorners
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Добавить закругленные углы рамки и вырез/динамический остров к скриншоту для устройств iOS.
Это можно сделать только когда имя устройства МОЖЕТ быть автоматически определено и соответствует следующему списку нормализованных имен устройств. Нормализация будет выполнена этим модулем. iPhone:
- iPhone X:
iphonex
- iPhone XS:
iphonexs
- iPhone XS Max:
iphonexsmax
- iPhone XR:
iphonexr
- iPhone 11:
iphone11
- iPhone 11 Pro:
iphone11pro
- iPhone 11 Pro Max:
iphone11promax
- iPhone 12:
iphone12
- iPhone 12 Mini:
iphone12mini
- iPhone 12 Pro:
iphone12pro
- iPhone 12 Pro Max:
iphone12promax
- iPhone 13:
iphone13
- iPhone 13 Mini:
iphone13mini
- iPhone 13 Pro:
iphone13pro
- iPhone 13 Pro Max:
iphone13promax
- iPhone 14:
iphone14
- iPhone 14 Plus:
iphone14plus
- iPhone 14 Pro:
iphone14pro
- iPhone 14 Pro Max:
iphone14promax
iPads: - iPad Mini 6th Generation:
ipadmini
- iPad Air 4th Generation:
ipadair
- iPad Air 5th Generation:
ipadair
- iPad Pro (11-inch) 1st Generation:
ipadpro11
- iPad Pro (11-inch) 2nd Generation:
ipadpro11
- iPad Pro (11-inch) 3rd Generation:
ipadpro11
- iPad Pro (12.9-inch) 3rd Generation:
ipadpro129
- iPad Pro (12.9-inch) 4th Generation:
ipadpro129
- iPad Pro (12.9-inch) 5th Generation:
ipadpro129
autoSaveBaseline
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
true
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Если во время сравнения не найдено базовое изображение, оно автоматически копируется в папку с базовыми изображениями.
baselineFolder
- Тип:
string|()=> string
- Обязательный: Нет
- По умолчанию:
.path/to/testfile/__snapshots__/
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Директория, которая будет содержать все базовые изображения, используемые при сравнении. Если не установлено, будет использоваться значение по умолчанию, которое будет хранить файлы в папке __snapshots__/
рядом со спецификацией, выполняющей визуальные тесты. Функция, возвращающая string
, также может использоваться для установки значения baselineFolder
:
{
baselineFolder: path.join(process.cwd(), 'foo', 'bar', 'baseline')
},
// ИЛИ
{
baselineFolder: () => {
// Делаем здесь какую-то магию
return path.join(process.cwd(), 'foo', 'bar', 'baseline');
}
}
clearRuntimeFolder
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Удалить папку времени выполнения (actual
и diff
) при инициализации
Это будет работать только если screenshotPath
установлен через параметры плагина и НЕ БУДЕТ РАБОТАТЬ, если вы устанавливаете папки в методах
createJsonReportFiles
(НОВОЕ)
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
Теперь у вас есть возможность экспортировать результаты сравнения в JSON-файл отчета. Предоставляя опцию createJsonReportFiles: true
, каждое сравниваемое изображение создаст отчет, хранящийся в папке actual
, рядом с каждым результатом actual
изображения. Вывод будет выглядеть так:
{
"parent": "check methods",
"test": "should fail comparing with a baseline",
"tag": "examplePageFail",
"instanceData": {
"browser": {
"name": "chrome-headless-shell",
"version": "126.0.6478.183"
},
"platform": {
"name": "mac",
"version": "not-known"
}
},
"commandName": "checkScreen",
"boundingBoxes": {
"diffBoundingBoxes": [
{
"left": 1088,
"top": 717,
"right": 1186,
"bottom": 730
}
//....
],
"ignoredBoxes": [
{
"left": 159,
"top": 652,
"right": 356,
"bottom": 703
}
//...
]
},
"fileData": {
"actualFilePath": "/Users/wdio/visual-testing/.tmp/actual/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"baselineFilePath": "/Users/wdio/visual-testing/localBaseline/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"diffFilePath": "/Users/wdio/visual-testing/.tmp/diff/desktop_chrome-headless-shell/examplePageFail-local-chrome-latest-1366x768png",
"fileName": "examplePageFail-local-chrome-latest-1366x768.png",
"size": {
"actual": {
"height": 768,
"width": 1366
},
"baseline": {
"height": 768,
"width": 1366
},
"diff": {
"height": 768,
"width": 1366
}
}
},
"misMatchPercentage": "12.90",
"rawMisMatchPercentage": 12.900729014153246
}
Когда все тесты выполнены, новый JSON-файл с коллекцией сравнений будет сгенерирован и его можно найти в к орне вашей папки actual
. Данные группируются по:
describe
для Jasmine/Mocha илиFeature
для CucumberJSit
для Jasmine/Mocha илиScenario
для CucumberJS и затем сортируются по:commandName
, которые являются именами методов сравнения, используемых для сравнения изображенийinstanceData
, сначала браузер, затем устройство, затем платформа это будет выглядеть так
[
{
"description": "check methods",
"data": [
{
"test": "should fail comparing with a baseline",
"data": [
{
"tag": "examplePageFail",
"instanceData": {},
"commandName": "checkScreen",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "14.34",
"rawMisMatchPercentage": 14.335403703025868
},
{
"tag": "exampleElementFail",
"instanceData": {},
"commandName": "checkElement",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "1.34",
"rawMisMatchPercentage": 1.335403703025868
}
]
}
]
}
]
Данные отчета дадут вам возможность создать свой собственный визуальный отчет без необходимости самостоятельно выполнять всю магию и сбор данных.
Вам нужно использовать версию @wdio/visual-testing
5.2.0 или выше
disableBlinkingCursor
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview)
Включить/отключить "мигание" каретки для всех input
, textarea
, [contenteditable]
в приложении. Если установлено в true
, каретка будет установлена на transparent
перед созданием скриншота
и сброшена после завершения
disableCSSAnimation
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview)
Включить/отключить все CSS-анимации в приложении. Если установлено в true
, все анимации будут отключены перед созданием скриншота
и сброшены после завершения
enableLayoutTesting
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
- Поддерживаемые контексты приложения: Web
Это скроет весь текст на странице, так что для сравнения будет использоваться только макет. Скрытие будет выполнено путем добавления стиля 'color': 'transparent !important'
к каждому элементу.
Для вывода см. Вывод теста
При использовании этого флага каждый элемент, содержащий текст (не только p, h1, h2, h3, h4, h5, h6, span, a, li
, но и div|button|..
), получит это свойство. Нет возможности настроить это.
formatImageName
- Тип:
string
- Обязательный: Нет
- По умолчанию:
{tag}-{browserName}-{width}x{height}-dpr-{dpr}
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Имя сохраняемых изображений можно настроить, передав параметр formatImageName
со строкой форма та, например:
{tag}-{browserName}-{width}x{height}-dpr-{dpr}
Следующие переменные могут быть переданы для форматирования строки и будут автоматически считываться из возможностей экземпляра. Если их нельзя определить, будут использованы значения по умолчанию.
browserName
: Имя браузера в предоставленных возможностяхbrowserVersion
: Версия браузера, указанная в возможностяхdeviceName
: Имя устройства из возможностейdpr
: Отношение пикселей устройстваheight
: Высота экранаlogName
: LogName из возможностейmobile
: Это добавит_app
или имя браузера послеdeviceName
для различия скриншотов приложения от скриншотов браузераplatformName
: Имя платформы в предоставленных возможностяхplatformVersion
: Версия платформы, указанная в возможностяхtag
: Тег, который предоставляется в вызываемых методахwidth
: Ширина экрана
Вы не можете предоставлять пользовательские пути/папки в formatImageName
. Если вы хотите изменить путь, то, пожалуйста, проверьте изменение следующих опций:
baselineFolder
screenshotPath
folderOptions
для каждого метода
fullPageScrollTimeout
- Тип:
number
- Обязательный: Нет
- По умолчанию:
1500
- Поддерживаемые контексты приложения: Web
Таймаут в миллисекундах для ожидания после прокрутки. Это может помочь идентифицировать страницы с ленивой загрузкой.
Это будет работать только когда опция сервиса/метода userBasedFullPageScreenshot
установлена на true
, см. также userBasedFullPageScreenshot
hideScrollBars
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
true
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview)
Скрыть полосы прокрутки в приложении. Если установлено в true, все полосы прокрутки будут отключены перед созданием скриншота. По умолчанию установлено true
для предотвращения дополнительных проблем.
logLevel
- Тип:
string
- Обязательный: Нет
- По умолчанию:
info
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Добавляет дополнительные логи, варианты: debug | info | warn | silent
Ошибки всегда записываются в консоль.
savePerInstance
- Тип:
boolean
- По умолчанию:
false
- Обязательный: нет
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Сохранять изображения для каждого экземпляра в отдельной папке, так, например, все скриншоты Chrome будут сохранены в папке Chrome, например desktop_chrome
.
screenshotPath
- Тип:
string | () => string
- По умолчанию:
.tmp/
- Обязательный: нет
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App
Директория, которая будет содержать все актуальные/ра зличающиеся скриншоты. Если не установлено, будет использоваться значение по умолчанию. Функция, возвращающая строку, также может использоваться для установки значения screenshotPath:
{
screenshotPath: path.join(process.cwd(), 'foo', 'bar', 'screenshotPath')
},
// ИЛИ
{
screenshotPath: () => {
// Делаем здесь какую-то магию
return path.join(process.cwd(), 'foo', 'bar', 'screenshotPath');
}
}
toolBarShadowPadding
- Тип:
number
- Обязательный: Нет
- По умолчанию:
6
для Android и15
для iOS (6
по умолчанию и9
будут добавлены автоматически для возможной домашней панели на iPhone с вырезом или iPad с домашней панелью) - Поддерживаемые контексты приложения: Web
Отступ, который необходимо добавить к панели инструментов на iOS и Android для правильного обрезания области просмотра.
userBasedFullPageScreenshot
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
false
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview) Введено в visual-service@7.0.0
По умолчанию, полностраничные скриншоты на настольном веб-сайте создаются с использованием протокола WebDriver BiDi, который обеспечивает быстрые, стабильные и согласованные скриншоты без прокрутки. Когда userBasedFullPageScreenshot установлен в true, процесс создания скриншота имитирует реального пользователя: прокрутка через страницу, захват скриншотов размером с область просмотра и их сшивание вместе. Этот метод полезен для страниц с контентом с ленивой загрузкой или динамическим рендерингом, который зависит от положения прокрутки.
Используйте эту опцию, если ваша страница зависит от загрузки содержимого при прокрутке или если вы хотите сохранить поведение старых методов создания скриншотов.
waitForFontsLoaded
- Тип:
boolean
- Обязательный: Нет
- По умолчанию:
true
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview)
Шрифты, включая сторонние, могут загружаться синхронно или асинхронно. Асинхронная загрузка означает, что шрифты могут загружаться после того, как WebdriverIO определит, что страница полностью загружена. Чтобы предотвратить проблемы с отображением шрифтов, этот модуль, по умолчанию, будет ждать загрузки всех шрифтов перед созданием скриншота.
Параметры Tabbable
Этот модуль также поддерживает отображение пути, которым пользователь использовал бы клавиатуру для tab-перемещения по веб-сайту, рисуя линии и точки от одного tabbable-элемента к другому.
Работа вдохновлена блог-постом Viv Richards о "АВТОМАТИЗАЦИИ TABABILITY СТРАНИЦЫ (ЭТО СЛОВО?) С ВИЗУАЛЬНЫМ ТЕСТИРОВАНИЕМ".
Способ выбора tabbable-элементов основан на модуле tabbable. Если есть какие-либо проблемы с табуляцией, пожалуйста, проверьте README.md и особенно раздел More details.
tabbableOptions
- Тип:
object
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Параметры, которые можно изменить для линий и точек, если вы используете методы {save|check}Tabbable
. Параметры объяснены ниже.
tabbableOptions.circle
- Тип:
object
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Параметры для изменения круга.
tabbableOptions.circle.backgroundColor
- Тип:
string
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Цвет фона круга.
tabbableOptions.circle.borderColor
- Тип:
string
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Цвет границы круга.
tabbableOptions.circle.borderWidth
- Тип:
number
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Ширина границы круга.
tabbableOptions.circle.fontColor
- Тип:
string
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Цвет шрифта текста в круге. Это будет показано только если showNumber
установлен на true
.
tabbableOptions.circle.fontFamily
- Тип:
string
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Семейство шрифта текста в круге. Это будет показано только если showNumber
установлен на true
.
Убедитесь, что используете шрифты, поддерживаемые браузерами.
tabbableOptions.circle.fontSize
- Тип:
number
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Размер шрифта текста в круге. Это будет показано только если showNumber
установлен на true
.
tabbableOptions.circle.size
- Тип:
number
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Размер круга.
tabbableOptions.circle.showNumber
- Тип:
showNumber
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Показать номер последовательности табуляции в круге.
tabbableOptions.line
- Тип:
object
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Параметры для изменения линии.
tabbableOptions.line.color
- Тип:
string
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Цвет линии.
tabbableOptions.line.width
- Тип:
number
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web
Ширина линии.
Параметры сравнения
compareOptions
- Тип:
object
- Обязательный: Нет
- По умолчанию: См. здесь для всех значений по умолчанию
- Поддерживаемые контексты приложения: Web, Hybrid App (Webview), Native App (См. Параметры сравнения методов для более подробной информации)
Параметры сравнения также могут быть установлены как параметры сервиса, они описаны в Параметрах сравнения методов