Cucumber-js: Wie funktioniert die parallele Option mit dem Ereignisprotokoll?

Erstellt am 5. Feb. 2018  ·  9Kommentare  ·  Quelle: cucumber/cucumber-js

Benutzerdefinierte Formatierer, die nur an test-run-finished hängen, wie der JSON-Formatierer, funktionieren wie beabsichtigt, wenn sie parallelisiert werden, aber Formatierer, die frühere Ereignisse wie test-(step|case)-started und geordnet sind, haben ihre Ausgabe außerhalb der Reihenfolge protokolliert, wodurch die Ausgabedokumentstruktur ungültig wird. Ist da irgendwas geplant, um dem entgegenzuwirken? Kann die Ausgabe auf Worker-Basen gepuffert und nach Abschluss auf einmal auf dem Master protokolliert werden?

Hilfreichster Kommentar

Wir brauchen diese Funktion sehr!!!

Alle 9 Kommentare

Ich denke, jedes Ereignis sollte genügend Informationen enthalten, um es mit früheren Ereignissen verknüpfen zu können, anstatt es zu puffern.

Ich bin mir nicht sicher, wie das funktionieren würde, wenn nur 'End'-Ereignisse eingehakt sind, da dies den Anfang der Testausgabe verfehlen würde. Um hübsche Formatierer und Testläufer von IntelliJ-basierten Editoren als Beispiele zu verwenden, funktionieren sie wie folgt:

  1. 'Öffnen'-Anweisung beim Startereignis protokollieren, im Fall von hübsch -- Scenario: Foo , im Fall von IntelliJ -- Kommentar im TeamCity-Format #teamcity[testStarted]
  2. Führen Sie den Test aus, der nach der ersten Ausgabe des Formatierers seine eigenen Protokolle druckt
  3. Abschlussanweisung bei Endereignis protokollieren, pass/fail Zusammenfassung oder ##teamcity[testFinished]

Die Reihenfolge ist wichtig, da die Eröffnungsanweisung vor allem steht, was der Test protokolliert, und die Abschlussanweisung danach und kein anderer Test sollte parallel dazu etwas protokollieren, oder sie verwechseln, welche Ausgabe zu welchem ​​Test gehört. Die Pufferung scheint sich darum zu kümmern, da jeder Ausgang im atomaren Betrieb isoliert und auf dem Master protokolliert wird.

Wir können eine isParallel Option an benutzerdefinierte Formatierer übergeben, um sie wissen zu lassen, dass die Ausgabe von Dingen bei testfallgestarteten / testschritt-Ereignissen durcheinander gerät und sie daher nur bei testfall-beendeten Ereignissen ausgegeben werden sollten.

Wir brauchen mehr Diskussion zu diesem Thema. Derzeit besteht bei der Verwendung eines beliebigen Formatierers die Gefahr, dass der Gurken-Runner aufgrund von E/A-Konflikten beim Versuch, auf ein Terminal zu schreiben, abstürzt. Für den Parallelläufer wäre der Fortschrittsbalken-Formatierer ideal, wenn er den Balken nur mitbewegt und dann am Ende eine Zusammenfassung ausgibt.

Der Plan ist, auf eigenständige Formatierer umzustellen, die einen Nachrichtenstrom von Gurken verarbeiten.

Siehe Roadmap und dots-formatter und pretty-formatter (WIP) im Monorepo

Wir brauchen diese Funktion sehr!!!

Hallo! Gibt es eine Möglichkeit, gurken js parallel zu allure reporter auszuführen? Wenn ich versuche, mit cucumber-js --parallel 2 -t @debug --format reporter.js:./dummy.txt auszuführen, habe ich gerade TypeError: Cannot read property 'sourceLocation' of undefined
Vielen Dank im Voraus!

Gleiches Problem wie @yevgen-getalo hier.

Das Schließen als v7.0.0 verwendet das oben erwähnte neue Nachrichtenprotokoll, bei dem $THING_started und $THING_finished Ereignisse zuverlässig über IDs verknüpft werden können. Das eventDataCollector.query Objekt (eine Instanz von @cucumber/query ) kann dabei helfen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen