Cucumber-js: gurke-voreingestellte Module unter Bedarfsmodul zulassen

Erstellt am 13. Apr. 2021  ·  4Kommentare  ·  Quelle: cucumber/cucumber-js

Ich versuche, ein externes Modul zu erstellen, in dem ich eine Voreinstellung zum Ausführen eines Gurkentests einrichten kann.
Dieses externe Modul hat @cucumber/cucumber als peerDependency, also installiert es es nicht direkt. Daher ermöglicht diese Abhängigkeit der Voreinstellung, den Konstruktor World zu setzen sowie Given , When , Then zum globalen Geltungsbereich hinzuzufügen, damit wir saubere Schrittdefinitionen.

Alles funktioniert , wenn ich Gurken-js Flags Option auf eine lokale Datei als verknüpfende cucumber-js --require ./test-preset.setup.js jedoch einmal über an ein externes Modul auf den gleichen voreingestellten bewegt und es als erforderlich cucumber-js --require-module cucumber-preset-foo , den Prozess endet mit dem gleichen Fehler wie bei #1326.

Ich konnte etwas im cli-Quellcode erkennen, wo supportCodeLibraryBuilder.reset aufgerufen wird, direkt nachdem diese externen Module durch supportCodeRequiredModules , was die Interaktion mit der laufenden Gurkeninstanz nach dem Zurücksetzen der Daten unumgänglich machen könnte gleich nach.

https://github.com/cucumber/cucumber-js/blob/e2fd32a4fe411484275307e2a4b59605a8ded165/src/cli/index.ts#L160 -L161

https://github.com/cucumber/cucumber-js/blob/e2fd32a4fe411484275307e2a4b59605a8ded165/src/support_code_library_builder/index.ts#L402 -L417

Vielleicht gibt es einen bestimmten Grund für dieses Design, aber ich würde gerne prüfen, ob das Aufrufen der Reset-Methode impliziert wird, bevor die Module benötigt werden, damit wir diese tragbaren Presets verwenden können? Ich kann sehen, dass diese Art von Funktion einigen Benutzern zugute kommt, die Voreinstellungen für bestimmte Entwicklungsumgebungen wie beispielsweise React e2e verwenden möchten.

node: v15.8.0
@cucumber/cucumber: 7.1.0
os: Linux
bug help wanted accepted

Alle 4 Kommentare

Hallo @zanona

Dein Modul sieht interessant aus
Ihre Untersuchung zu diesem Thema auch

Da Sie bereits eine gute Vorstellung davon haben, was passiert und wie es behoben werden kann, könnten Sie eine PR dafür eröffnen und die Diskussion darüber unterstützen?

Hmm, ich sehe kein Problem damit, den Reset auf kurz vor dem Anforderungsmodul zu verschieben. Es war eher ein Produkt dessen, wofür das Require-Modul in der Vergangenheit verwendet wurde, das den primären Anwendungsfall hatte, Transpiler einzurichten (Typoskript / Babel).

Klingt toll Jungs.
Ich kann sicherlich eine PR vorbereiten, vielleicht können wir sie eher als Funktion als als Fehler einstufen, damit ich Tests vorbereiten kann, die darauf ausgerichtet sind, dass der Benutzer eine benutzerdefinierte Voreinstellung erstellen und sicherstellen kann, dass der Testläufer sie versteht?

Alternativ könnten wir einfach diese beiden Zeilen austauschen und nach fehlgeschlagenen Tests Ausschau halten.

Wie würden Sie es am liebsten angehen?

In Bezug auf Gurke bleibt dies ein Fehler, da beim Versuch, ein Modul regelmäßig zu laden, ein unerwarteter Fehler auftritt, der eigentlich funktionieren sollte.

Aber Sie können Ihre PR immer noch als Verbesserung mit einem Scoped-Test, wie Sie beschrieben haben, eingrenzen - die Idee gefällt mir eigentlich - was den Vorteil hätte, auch dieses Problem zu beheben. Was denken Sie?

Bezüglich der Möglichkeit, die beiden Leitungen zu tauschen, könnte das IMO ein erster guter Ausgangspunkt sein :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen