Przejdź do głównej treści

Raporter CucumberJS JSON

wdio-cucumberjs-json-reporter jest pakietem zewnętrznym, więcej informacji można znaleźć na GitHub | npm

Raporter WDIO, który tworzy pliki JSON CucumberJS dla WebdriverIO v8 i nowszych.

NPM

Co to robi​

Ten raporter generuje plik Cucumber JSON dla każdej funkcji, która jest testowana. Plik JSON może być używany z dowolnym raportem, którego chcesz użyć, jak na przykład multiple-cucumber-html-reporter.

Dodaje również metadane o uruchomionej instancji do pliku funkcji i co nie mniej ważne, daje możliwość dodania załączników do wyjścia JSON.

Instalacja​

Najłatwiejszym sposobem jest przechowywanie wdio-cucumberjs-json-reporter jako devDependency w pliku package.json.

{
"devDependencies": {
"wdio-cucumberjs-json-reporter": "^5.0.0"
}
}

Możesz to zrobić po prostu przez:

npm install wdio-cucumberjs-json-reporter --save-dev

dzięki czemu zostanie automatycznie dodany do Twojego package.json

Instrukcje dotyczące instalacji WebdriverIO można znaleźć tutaj.

Konfiguracja​

Skonfiguruj katalog wyjściowy i język w pliku wdio.conf.js:

export const config = {
// ...
reporters: [
// W ten sposób z domyślnymi opcjami, patrz opcje poniżej
'cucumberjs-json',

// LUB w ten sposób, jeśli chcesz ustawić folder i język
[ 'cucumberjs-json', {
jsonFolder: '.tmp/new/',
language: 'en',
},
],
],
// ...
}

NIE UŻYWAJ OBU SPOSOBÓW DODAWANIA RAPORTORA, TO TYLKO PRZYKŁAD!

Opcje​

jsonFolder​

  • Typ: String
  • Obowiązkowe: Nie
  • Domyślnie: .tmp/json/

Katalog, w którym będą przechowywane pliki JSON generowane przez ten raport, względem miejsca, z którego uruchomiony jest skrypt.

Uwaga: Jeśli używasz skryptu npm z wiersza poleceń, na przykład npm run test, jsonFolder będzie względem ścieżki, z której skrypt jest wykonywany. Wykonanie go z katalogu głównego projektu spowoduje również utworzenie jsonFolder w katalogu głównym projektu.

language​

  • Typ: String
  • Obowiązkowe: Nie
  • Domyślnie: en

Język, w którym napisane są scenariusze Gherkin (domyślnie angielski). Lista kodów języków i ich słów kluczowych znajduje się tutaj.

disableHooks​

  • Typ: boolean
  • Obowiązkowe: Nie
  • Domyślnie: false

Szczegóły hooka nie będą częścią generowania, jeśli ta właściwość będzie ustawiona na true.

reportFilePerRetry​

  • Typ: boolean
  • Obowiązkowe: Nie
  • Domyślnie: true

Gdy specyfikacja jest ponawiana, raport zostanie dołączony do istniejącego pliku raportu z poprzednich prób, jeśli ta właściwość jest ustawiona na false.

Przykład: ['cucumberjs-json', { jsonFolder: '.tmp/new/', language: 'en', disableHooks:true}]

Metadane​

Uwaga:
Obecnie nie jest to obsługiwane w WebdriverIO V6, WebdriverIO V5 nadal to obsługuje, a WebdriverIO V7 ponownie to obsługuje

Jak wspomniano, ten raport może automatycznie przechowywać metadane bieżącej maszyny / urządzenia, na którym wykonywana jest funkcja.

Aby to dostosować, możesz dodać to, dodając następujący obiekt do swoich capabilities

// Przykład wdio.conf.js
export const config = {
//..
capabilities: [
{
browserName: 'chrome',
// Dodaj to
'cjson:metadata': {
// Dla przeglądarki
browser: {
name: 'chrome',
version: '58',
},
// dla aplikacji
app: {
name: 'name.of.app.ipa',
version: '1.2.3',
},
device: 'MacBook Pro 15',
platform: {
name: 'OSX',
version: '10.12.6'
}
},
},
],
};

Obiekt metadanych musi mieć prefiks cjson, w przeciwnym razie nie będzie działać!

Wartości metadanych​

metadata.app.name​

  • Typ: string

np.: Nazwa aplikacji.

metadata.app.version​

  • Typ: string

np.: Wersja aplikacji.

metadata.browser.name​

  • Typ: string
  • Możliwe wartości: internet explorer | edge | chrome | firefox | safari

metadata.browser.version​

  • Typ: string

np.: Wersja przeglądarki, może być dodana ręcznie lub pobrana podczas wykonywania testów, aby uzyskać dokładny numer wersji.

metadata.device​

  • Typ: string

np.: Nazwa reprezentująca typ urządzenia. Na przykład, jeśli uruchamiasz go na maszynie wirtualnej, możesz umieścić tutaj Virtual Machine, lub nazwę urządzenia mobilnego, jak na przykład iPhone 7 Plus.

metadata.platform.name​

  • Typ: string
  • Możliwe wartości: windows | osx | linux | ubuntu | android | ios

metadata.platform.version​

  • Typ: string

np.: Wersja platformy

Jeśli nie podasz obiektu browser w metadanych, moduł automatycznie określi go dla Ciebie. Zawsze nadpisze go najnowszą wartością, którą może określić.

Jeśli nie podasz device i/lub obiektu platform, zostanie to domyślnie ustawione na not known

Jeśli nie podasz browser.name lub browser.version, moduł spróbuje to automatycznie określić.

Załącznik​

Masz możliwość dołączania danych do pliku JSON we wszystkich tych hookach / krokach:

  • Before(All)
  • After(All)
  • Given
  • When
  • Then
  • And

Jedyną rzeczą, którą musisz zapewnić, jest następujący kod w plikach kroków.

Dla ES Modules (ESM)

import cucumberJson from 'wdio-cucumberjs-json-reporter';

// Dołącz ciąg znaków (jeśli nie podano typu, automatycznie zostanie ustawiony na `text/plain`)
cucumberJson.attach('just a string');
cucumberJson.attach('just a second string', 'text/plain');

// Dołącz JSON
cucumberJson.attach({"json-string": true}, 'application/json');

// Dołącz zrzut ekranu w hooku before
cucumberJson.attach(await browser.takeScreenshot(), 'image/png');

Dla CommonJS (CJS)

const { attach } = require("wdio-cucumberjs-json-reporter");

// Dołącz ciąg znaków (jeśli nie podano typu, automatycznie zostanie ustawiony na `text/plain`)
attach('just a string');
attach('just a second string', 'text/plain');

// Dołącz JSON
attach({"json-string": true}, 'application/json');

// Dołącz zrzut ekranu w hooku before
attach(await browser.takeScreenshot(), 'image/png');

Używaj go z multiple-cucumber-html-reporter​

Poprzedni moduł dla WebdriverIO V4, wdio-multiple-cucumber-html-reporter, miał wbudowane połączenie z modułem multiple-cucumber-html-reporter. Nie ma tego przypadku dla tego raportora ponieważ nowa konfiguracja WebdriverIO V5 opiera się na instancji, która nie pozwala mi używać hooków onPrepare i onComplete.

Jeśli nadal chcesz używać modułu multiple-cucumber-html-reporter, możesz dodać następujące elementy do pliku konfiguracyjnego.

  • Zainstaluj moduł za pomocą

    npm install multiple-cucumber-html-reporter --save-dev
  • Dodaj to do swojego pliku konfiguracyjnego

    import fs from 'node:fs/promises'
    // Importuj moduł
    import { generate } from 'multiple-cucumber-html-reporter'

    // Przykład wdio.conf.js
    export const config = {
    //..

    // =====
    // Hooks
    // =====
    /**
    * Wykonuje się raz przed uruchomieniem wszystkich workerów.
    */
    onPrepare: () => {
    // Usuń folder `.tmp/`, który przechowuje pliki json i raporty
    return fs.rm('.tmp/', { recursive: true });
    },
    /**
    * Wykonuje się po wyłączeniu wszystkich workerów i przed zakończeniem procesu.
    */
    onComplete: () => {
    // Generuj raport, gdy wszystkie testy zostaną wykonane
    generate({
    // Wymagane
    // Ta część musi być tą samą ścieżką, gdzie przechowujesz pliki JSON
    // domyślnie = '.tmp/json/'
    jsonDir: '.tmp/json/',
    reportPath: '.tmp/report/',
    // więcej opcji znajdziesz na https://github.com/wswebcreation/multiple-cucumber-html-reporter#options
    });
    }
    }

Starsze wersje WebdriverIO​

TEN MODUŁ MOŻE DZIAŁAĆ TYLKO Z WebdriverIO V8+!
Dla V6 sprawdź dokumentację tutaj i użyj wersji 2.0.4
Dla V5 sprawdź dokumentację tutaj i użyj wersji 1.3.0

TEN MODUŁ NIE JEST ZAMIENNIKIEM wdio-multiple-cucumber-html-reporter. TAMTEN MODUŁ OBSŁUGUJE TYLKO WEBDRIVERIO V4 I RÓWNIEŻ TWORZY RAPORT. TEN MODUŁ TWORZY TYLKO JSON, NIE RAPORT!!

Welcome! How can I help?

WebdriverIO AI Copilot