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