Репортер 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
, модуль спробує визначити це автоматично.
Вкладення
У вас є можливість прикріпити дані до JSON-файлу у всіх цих хуках / кроках:
- Before(All)
- After(All)
- Given
- When
- Then
- And
Вам потрібно лише додати наступний код у ваші файли кроків.
Для ES модулів (ESM)
import cucumberJson from 'wdio-cucumberjs-json-reporter';
// Прикріпити рядок (якщо тип не вказано, він автоматично буде за замовчуванням `text/plain`)
cucumberJson.attach('просто рядок');
cucumberJson.attach('просто другий рядок', 'text/plain');
// Прикріпити JSON
cucumberJson.attach({"json-string": true}, 'application/json');
// Прикріпити скріншот у хуку before
cucumberJson.attach(await browser.takeScreenshot(), 'image/png');
Для CommonJS (CJS)
const { attach } = require("wdio-cucumberjs-json-reporter");
// Прикріпити рядок (якщо тип не вказано, він автоматично буде за замовчуванням `text/plain`)
attach('просто рядок');
attach('просто другий рядок', 'text/plain');
// Прикріпити JSON
attach({"json-string": true}, 'application/json');
// Прикріпити скріншот у хуку before
attach(await browser.takeScreenshot(), 'image/png');
Використання з multiple-cucumber-html-reporter
Попередній модуль для WebdriverIO V4, wdio-multiple-cucumber-html-reporter,
мав вбудований зв'язок з модулем multiple-cucumber-html-reporter. Це не стосується цього
репортера, оскільки нова конфігурація WebdriverIO V5 базується на екземплярі, який не дозволяє мені використовувати хуки onPrepare
та onComplete
.
Якщо ви все ще хочете використовувати модуль multiple-cucumber-html-reporter, ви можете додати наступне до вашого конфігураційного файлу.
-
Встановіть модуль за допомогою
npm install multiple-cucumber-html-reporter --save-dev
-
Додайте це до вашого конфігураційного файлу
import fs from 'node:fs/promises'
// Імпортуйте модуль
import { generate } from 'multiple-cucumber-html-reporter'
// Приклад wdio.conf.js
export const config = {
//..
// =====
// Хуки
// =====
/**
* Виконується один раз перед запуском всіх воркерів.
*/
onPrepare: () => {
// Видаліть папку `.tmp/`, яка містить json та файли звітів
return fs.rm('.tmp/', { recursive: true });
},
/**
* Виконується після того, як всі воркери завершили роботу і процес готовий до виходу.
*/
onComplete: () => {
// Згенерувати звіт, коли всі тести закінчаться
generate({
// Обов'язково
// Ця частина повинна бути тим самим шляхом, де ви зберігаєте JSON-файли
// за замовчуванням = '.tmp/json/'
jsonDir: '.tmp/json/',
reportPath: '.tmp/report/',
// для отримання додаткових параметрів див. https://github.com/wswebcreation/multiple-cucumber-html-reporter#options
});
}
}
Старіші версії WebdriverIO
ЦЕЙ МОДУЛЬ МОЖЕ ПРАЦЮВАТИ ТІЛЬКИ З WebdriverIO V8+!
Для V6 перевірте документацію тут і використовуйте версію 2.0.4
Для V5 перевірте документацію тут і використовуйте версію 1.3.0
ЦЕЙ МОДУЛЬ НЕ Є ЗАМІНОЮ wdio-multiple-cucumber-html-reporter. ЦЕЙ МОДУЛЬ ПІДТРИМУЄ ТІЛЬКИ WEBDRIVERIO V4 І ТАКОЖ СТВОРЮЄ ЗВІТ. ЦЕЙ МОДУЛЬ ТІЛЬКИ СТВОРЮЄ JSON, А НЕ ЗВІТ!!