CucumberJS JSON Reporter
wdio-cucumberjs-json-reporter ist ein Paket von Drittanbietern. Weitere Informationen finden Sie auf GitHub | npm
Ein WDIO-Reporter, der CucumberJS-JSON-Dateien für WebdriverIO v8 und höher erstellt.
Was macht es
Dieser Reporter generiert eine Cucumber JSON-Datei für jedes Feature, das getestet wird. Die JSON-Datei kann mit jedem beliebigen Bericht verwendet werden, den Sie verwenden möchten, wie zum Beispiel multiple-cucumber-html-reporter.
Es fügt der Feature-Datei auch Metadaten über die laufende Instanz hinzu und bietet Ihnen nicht zuletzt die Möglichkeit, Anhänge zur JSON-Ausgabe hinzuzufügen.
Installation
Am einfachsten ist es, wdio-cucumberjs-json-reporter
als devDependency in Ihrer package.json
zu behalten.
{
"devDependencies": {
"wdio-cucumberjs-json-reporter": "^5.0.0"
}
}
Sie können es einfach mit folgendem Befehl tun:
npm install wdio-cucumberjs-json-reporter --save-dev
so wird es automatisch zu Ihrer package.json
hinzugefügt
Anweisungen zur Installation von WebdriverIO
finden Sie hier.
Konfiguration
Konfigurieren Sie das Ausgabeverzeichnis und die Sprache in Ihrer wdio.conf.js-Datei:
export const config = {
// ...
reporters: [
// So mit den Standardoptionen, siehe die Optionen unten
'cucumberjs-json',
// ODER so, wenn Sie den Ordner und die Sprache festlegen möchten
[ 'cucumberjs-json', {
jsonFolder: '.tmp/new/',
language: 'en',
},
],
],
// ...
}
VERWENDEN SIE NICHT BEIDE METHODEN ZUM HINZUFÜGEN DES REPORTERS, DIES IST NUR EIN BEISPIEL!
Optionen
jsonFolder
- Typ:
String
- Erforderlich: Nein
- Standard:
.tmp/json/
Das Verzeichnis, in dem die von diesem Bericht generierten JSON-Dateien gespeichert werden, relativ zu dem Ort, von dem aus das Skript gestartet wird.
Hinweis: Wenn Sie ein npm-Skript von der Kommandozeile aus verwenden, wie zum Beispiel npm run test
, wird der jsonFolder
relativ zu dem Pfad sein, von dem aus das Skript ausgeführt wird. Die Ausführung vom Stammverzeichnis Ihres Projekts aus erstellt den jsonFolder
auch im Stammverzeichnis Ihres Projekts.
language
- Typ:
String
- Erforderlich: Nein
- Standard:
en
Die Sprache, in der die Gherkin-Szenarien geschrieben sind (standardmäßig Englisch). Die Liste der Sprachcodes und ihrer Schlüsselwörter finden Sie hier.
disableHooks
- Typ:
boolean
- Erforderlich: Nein
- Standard:
false
Hook-Details werden nicht Teil der Generierung sein, wenn diese Eigenschaft auf true
gesetzt ist.
reportFilePerRetry
- Typ:
boolean
- Erforderlich: Nein
- Standard:
true
Wenn ein Spec wiederholt wird, wird der Bericht an die bestehende Berichtsdatei aus den vorherigen Versuchen angehängt, wenn diese Eigenschaft auf false
gesetzt ist.
Beispiel:
['cucumberjs-json', { jsonFolder: '.tmp/new/', language: 'en', disableHooks:true}]
Metadaten
Hinweis:
Dies wird derzeit nicht unterstützt, wenn Sie WebdriverIO V6 verwenden. WebdriverIO V5 unterstützt dies weiterhin und WebdriverIO V7 unterstützt es wieder.
Wie bereits erwähnt, kann dieser Bericht automatisch die Metadaten des aktuellen Computers/Geräts speichern, auf dem das Feature ausgeführt wurde.
Um dies anzupassen, können Sie es hinzufügen, indem Sie das folgende Objekt zu Ihren capabilities
hinzufügen
// Beispiel wdio.conf.js
export const config = {
//..
capabilities: [
{
browserName: 'chrome',
// Fügen Sie das hinzu
'cjson:metadata': {
// Für einen Browser
browser: {
name: 'chrome',
version: '58',
},
// für eine App
app: {
name: 'name.of.app.ipa',
version: '1.2.3',
},
device: 'MacBook Pro 15',
platform: {
name: 'OSX',
version: '10.12.6'
}
},
},
],
};
Das Metadatenobjekt muss das Präfix
cjson
haben, sonst funktioniert es nicht!
Metadatenwerte
metadata.app.name
- Typ:
string
z.B.: Der Name der App.
metadata.app.version
- Typ:
string
z.B.: Die Version der App.
metadata.browser.name
- Typ:
string
- Mögliche Werte:
internet explorer | edge | chrome | firefox | safari
metadata.browser.version
- Typ:
string
z.B.: Die Version des Browsers. Diese kann manuell hinzugefügt oder während der Ausführung der Tests abgerufen werden, um die genaue Versionsnummer zu erhalten.
metadata.device
- Typ:
string
z.B.: Ein Name, der den Gerätetyp repräsentiert. Wenn Sie es beispielsweise auf einer virtuellen Maschine ausführen, können Sie hier Virtual Machine
angeben, oder den Namen des Mobilgeräts, wie zum Beispiel iPhone 7 Plus
.
metadata.platform.name
- Typ:
string
- Mögliche Werte:
windows | osx | linux | ubuntu | android | ios
metadata.platform.version
- Typ:
string
z.B.: Die Version der Plattform
Wenn Sie das
browser
-Objekt in den Metadaten nicht angeben, ermittelt dieses Modul es automatisch für Sie. Es wird es immer mit dem aktuellsten Wert überschreiben, den es ermitteln kann.
Wenn Sie das
device
und/oder dasplatform
-Objekt nicht angeben, wird es standardmäßig aufnot known
gesetzt.
Wenn Sie keinen
browser.name
oder einebrowser.version
angeben, versucht das Modul, dies automatisch zu ermitteln.
Anhang
Sie haben die Möglichkeit, Daten an die JSON-Datei in all diesen Hooks/Schritten anzuhängen:
- Before(All)
- After(All)
- Given
- When
- Then
- And
Das Einzige, was Sie bereitstellen müssen, ist der folgende Code in Ihren Step-Dateien.
Für ES-Module (ESM)
import cucumberJson from 'wdio-cucumberjs-json-reporter';
// Einen String anhängen (wenn kein Typ angegeben ist, wird automatisch 'text/plain' als Standard verwendet)
cucumberJson.attach('just a string');
cucumberJson.attach('just a second string', 'text/plain');
// JSON anhängen
cucumberJson.attach({"json-string": true}, 'application/json');
// Einen Screenshot in einem Before-Hook anhängen
cucumberJson.attach(await browser.takeScreenshot(), 'image/png');
Für CommonJS (CJS)
const { attach } = require("wdio-cucumberjs-json-reporter");
// Einen String anhängen (wenn kein Typ angegeben ist, wird automatisch 'text/plain' als Standard verwendet)
attach('just a string');
attach('just a second string', 'text/plain');
// JSON anhängen
attach({"json-string": true}, 'application/json');
// Einen Screenshot in einem Before-Hook anhängen
attach(await browser.takeScreenshot(), 'image/png');
Verwendung mit multiple-cucumber-html-reporter
Das vorherige Modul für WebdriverIO V4, wdio-multiple-cucumber-html-reporter,
hatte eine integrierte Verbindung mit dem multiple-cucumber-html-reporter-Modul. Dies ist bei diesem Reporter nicht der Fall, da die neue Einrichtung von WebdriverIO V5 auf einer Instanz basiert, die es mir nicht erlaubt, den onPrepare
- und onComplete
-Hook zu verwenden.
Wenn Sie weiterhin das multiple-cucumber-html-reporter-Modul verwenden möchten, können Sie Folgendes zu Ihrer Konfigurationsdatei hinzufügen.
-
Installieren Sie das Modul mit
npm install multiple-cucumber-html-reporter --save-dev
-
Fügen Sie dies zu Ihrer Konfigurationsdatei hinzu
import fs from 'node:fs/promises'
// Importieren Sie das Modul
import { generate } from 'multiple-cucumber-html-reporter'
// Beispiel wdio.conf.js
export const config = {
//..
// =====
// Hooks
// =====
/**
* Wird einmal ausgeführt, bevor alle Worker gestartet werden.
*/
onPrepare: () => {
// Entfernen Sie den Ordner `.tmp/`, der die JSON- und Berichtsdateien enthält
return fs.rm('.tmp/', { recursive: true });
},
/**
* Wird ausgeführt, nachdem alle Worker heruntergefahren wurden und der Prozess beendet werden soll.
*/
onComplete: () => {
// Erzeugen Sie den Bericht, wenn alle Tests abgeschlossen sind
generate({
// Erforderlich
// Dieser Teil muss der gleiche Pfad sein, in dem Sie die JSON-Dateien speichern
// Standard = '.tmp/json/'
jsonDir: '.tmp/json/',
reportPath: '.tmp/report/',
// Weitere Optionen finden Sie unter https://github.com/wswebcreation/multiple-cucumber-html-reporter#options
});
}
}
Ältere WebdriverIO-Versionen
DIESES MODUL KANN NUR MIT WebdriverIO V8+ FUNKTIONIEREN!
Für V6 überprüfen Sie bitte die Dokumentation hier und verwenden Sie Version 2.0.4
Für V5 überprüfen Sie bitte die Dokumentation hier und verwenden Sie Version 1.3.0
DIESES MODUL IST KEIN ERSATZ FÜR wdio-multiple-cucumber-html-reporter. DIESES MODUL UNTERSTÜTZT NUR WEBDRIVERIO V4 UND ERSTELLT AUCH EINEN BERICHT. DIESES MODUL ERSTELLT NUR EINE JSON, KEINEN BERICHT!!