Репортер 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, модуль спробує визначити це автоматично.
