Опции сервиса
Опции сервиса - это параметры, которые можно задать при инициализации сервиса и которые будут использоваться для каждого вызова метода.
// 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