Репортер CucumberJS JSON
wdio-cucumberjs-json-reporter является сторонним пакетом, для получения дополнительной информации смотрите GitHub | npm
WDIO репортер, который создает файлы CucumberJS JSON для WebdriverIO v8 и выше.
Что он делает
Этот репортер генерирует файл Cucumber JSON для каждой тестируемой функциональности. JSON-файл можно использовать с любым отчетом, который вы хотите использовать, например, multiple-cucumber-html-reporter.
Он также добавляет метаданные о запущенном экземпляре в файл функциональности и, наконец, дает вам возможность добавлять вложения в JSON-вывод.
Установка
Самый простой способ - это держать wdio-cucumberjs-json-reporter как devDependency в вашем package.json.
{
"devDependencies": {
"wdio-cucumberjs-json-reporter": "^5.0.0"
}
}
Вы можете просто сделать это с помощью:
npm install wdio-cucumberjs-json-reporter --save-dev
и он будет автоматически добавлен в ваш package.json
Инструкции по установке WebdriverIO можно найти здесь.
Конфигурация
Настройте выходной каталог и язык в вашем файле wdio.conf.js:
export const config = {
// ...
reporters: [
// Вот так с параметрами по умолчанию, смотрите параметры ниже
'cucumberjs-json',
// ИЛИ так, если вы хотите установить папку и язык
[ 'cucumberjs-json', {
jsonFolder: '.tmp/new/',
language: 'en',
},
],
],
// ...
}
НЕ ИСПОЛЬЗУЙТЕ ОБА СПОСОБА ДОБАВЛЕНИЯ РЕПОРТЕРА, ЭТО ПРОСТО ПРИМЕР!
Опции
jsonFolder
- Тип:
String - Обязательно: Нет
- По умолчанию:
.tmp/json/
Каталог, в котором будут храниться JSON-файлы, созданные этим отчетом, относительно места запуска скрипта.
Примечание: Если вы используете npm-скрипт из командной строки, например, npm run test, то jsonFolder будет относительно пути,
откуда выполняется скрипт. Выполнение из корня вашего проекта также создаст jsonFolder в корне вашего проекта.
language
- Тип:
String - Обязательно: Нет
- По умолчанию:
en
Язык, на котором написаны сценарии Gherkin (по умолчанию английский). Список кодов языков и их ключевых слов можно найти здесь.
disableHooks
- Тип:
boolean - Обязательно: Нет
- По умолчанию:
false
Детали хуков не будут частью генерации, если это свойство установлено на true.
reportFilePerRetry
- Тип:
boolean - Обязатель но: Нет
- По умолчанию:
true
Когда спецификация повторяется, отчет будет добавлен к существующему файлу отчета из предыдущих попыток, если это свойство установлено на false.
Пример:
['cucumberjs-json', { jsonFolder: '.tmp/new/', language: 'en', disableHooks:true}]
Метаданные
Примечание:
В настоящее время это не поддерживается при использовании WebdriverIO V6, WebdriverIO V5 по-прежнему поддерживает это, и WebdriverIO V7 снова поддерживает это
Как было сказано, этот отчет может автоматически сохранять метаданные текущей машины/устройства, на котором выполнялась функциональность.
Чтобы настроить это, вы можете добавить следующий объект в ваши capabilities
// Пример wdio.conf.js
export const config = {
//..
capabilities: [
{
browserName: 'chrome',
// Добавьте это
'cjson:metadata': {
// Для браузера
browser: {
name: 'chrome',
version: '58',
},
// для приложения
app: {
name: 'name.of.app.ipa',
version: '1.2.3',
},
device: 'MacBook Pro 15',
platform: {
name: 'OSX',
version: '10.12.6'
}
},
},
],
};
Объект метаданных должен иметь префикс
cjson, иначе он не будет работать!
Значения метаданных
metadata.app.name
- Тип:
string
например: Имя приложения.
metadata.app.version
- Тип:
string
например: Версия приложения.
metadata.browser.name
- Тип:
string - Возможные значения:
internet explorer | edge | chrome | firefox | safari
metadata.browser.version
- Тип:
string
например: Версия браузера, это можно добавить вручную или получить во время выполнения тестов, чтобы получить точный номер версии.
metadata.device
- Тип:
string
например: Имя, представляющее тип устройства. Например, если вы запускаете его на виртуальной машине, вы можете указать здесь Virtual Machine,
или название мобильного устройства, например, iPhone 7 Plus.
metadata.platform.name
- Тип:
string - Возможные значения:
windows | osx | linux | ubuntu | android | ios
metadata.platform.version
- Тип:
string
например: Версия платформы
Если вы не указываете объект
browserв метаданных, этот модуль автоматически определит его для вас. Он всегда переопределяет его самым последним значением, которое может определить.
Если вы не указываете
deviceи/или объектplatform, по умолчанию будет установлено значениеnot known
Если вы не указываете
browser.nameилиbrowser.version, модуль попытается определить это автоматически.
