Cucumber-js: Bitte fügen Sie Unterstützung für TypeScript hinzu

Erstellt am 13. Mai 2015  ·  33Kommentare  ·  Quelle: cucumber/cucumber-js

Ich habe eine Bibliothek mit Typoskript erstellt und meine Tests sind auch in Typoskript geschrieben. Ich würde gerne cucumber.js ausprobieren und Schrittdefinitionsdateien mit Typoskript erstellen. Sie unterstützen also Coffeescript und js, .ts wäre auch schön.

Grüße

Chris

Hilfreichster Kommentar

@jbpros, seit die Readme aktualisiert wurde, und dies zeigt sich deutlich in den Ergebnissen für "cucumber typescript" , ein Auszug:

Transpiler

-Schrittdefinitionen und Unterstützungsdateien können in anderen Sprachen geschrieben werden, die in Javascript transpiliert werden.
-Dies geschieht mit der CLI-Option --compiler <file_extension>:<module_name> . Für CoffeeScript 1.10.0,
-Dies geschieht mit --compiler coffee:coffee-script/register .
Schrittdefinitionen und Unterstützungsdateien können in anderen Sprachen geschrieben werden, die in Javascript transpiliert werden. Dies geschieht mit der CLI-Option --compiler <file_extension>:<module_name> .

KaffeeScript

Installieren Sie das Coffee-Script NPM-Paket und rufen Sie Cucumber mit --compiler coffee:coffee-script/register .

Typoskript

Installieren Sie das typescript-node NPM-Paket und rufen Sie Cucumber mit --compiler ts:typescript-node/register .

Wie üblich müssen alle Ihre Schrittdefinitions- und Unterstützungsdateien eine Funktion exportieren, die von Cucumber ausgeführt wird. So wird es in TS gemacht:

declare var module: any;
module.exports = function () {
 this.Given(/.*/, function () {
   // ...
 })
}

PogoScript

Installieren Sie das pogo NPM-Paket und rufen Sie Cucumber mit --compiler pogo:pogo .

Alle 33 Kommentare

Warum schickst du nicht einen Pull-Request @Chris2011

Ich werde nur Kunde dieses Projekts sein, wenn ich jeden Pull-Request von jedem Zeug mache, was ich verwende und etwas fehlt, dann kann ich es selbst erstellen. Es ist nur eine Funktionsanfrage. Wenn jemand Zeit hat und das gerne machen möchte, warum nicht. Ich nicht, weil ich keine Zeit habe, ich habe die gleiche normale Arbeit und andere Projekte und möchte nicht an jedem Projekt mitwirken, das ich verwende. Sry vielleicht für die harten Worte, aber für mich ist klar, dass es nicht möglich ist, an jedem Projekt mitzuarbeiten, was ich verwende. Ich muss die Quelle verstehen und so weiter.

Ich verstehe @ Chris2011. Vielleicht beschließt eines Tages jemand, dies zu implementieren, weil er Ihnen helfen möchte oder einfach nur zum Spaß.

Das realistischere Szenario ist, dass diese Funktionsanfrage offen bleibt, bis jemand sie genug braucht, um bereit zu sein, die Zeit und Mühe aufzubringen, sie zu implementieren und eine PR zu senden.

Vielleicht. Thx für deine Meinung. Aus meiner Sicht war es nur logisch, nach dieser Funktion zu fragen, da TS seit 1 oder 2 Jahren beliebter sein wird. Und wenn Sie oder wer auch immer sich entschieden hat, auch Coffeescript zu implementieren, warum nicht auch Typoscript?

Vielen Dank. Wir werden sehen was passiert...

Im Allgemeinen - genau wie Formatierer - möchte ich Sprach-/Dialekt-Unterstützung als Plugins von Drittanbietern anstelle eines Teils des Kerns (einschließlich des aktuellen CoffeeScript und PogoScript) haben.

TS +1

+1

Gefällt mir, pls tun es irgendwann!!!

:+1:

Kein Betrag von +1 oder :+1: wird dies bewirken. Jemand muss einen Pull-Request senden.

:+1: @aslakhellesoy Spot on

:8ball: @samccone

@jbpros @aslakhellesoy Das einzige, was getan werden sollte, um Sprachen von Drittanbietern zu unterstützen, ist die Implementierung von Modifizierungen:

SupportCodePathExpander.SUPPORT_CODE_FILES_IN_DIR_REGEXP = /\.(js|coffee|pogo)$/;

Und dann kann jeder jeden Transpiler zum Beispiel in support/env.js registrieren
Vielleicht sollte diese Regex überhaupt entfernt werden?

Das schaue ich mir gerne an. Ich kann die CoffeeScript-Funktionsdatei finden, aber nicht finden, wo die Schrittdefinitionen implementiert sind. Könnte mir bitte jemand einige Hinweise geben, was zu tun ist?

@SeanFarrow Ich habe es bereits lokal getan. Sie müssen nur /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 ändern und dann einen Transpiler über den Haken hinzufügen

Willst du eine pr schicken?

Von: Aleh Kashnikau [mailto:[email protected]]
Gesendet: 16. August 2015 19:15
An: gurke/gurke-js [email protected]
Cc: Sean Farrow Sean. [email protected]
Betreff: Re: [cucumber-js] Bitte fügen Sie Unterstützung für TypeScript hinzu (#335)

@SeanFa rrowhttps://github.com/SeanFarrow Ich habe es bereits lokal gemacht. Sie müssen nur /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 ändern und dann einen beliebigen Transpiler über den Haken hinzufügen


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf Gi tHub anhttps://github.com/cucumber/cucumber-js/issues/335#issuecomment -131598410.

@mkusher da --coffee Flag.

Ich möchte wirklich, dass dies sowieso über ein Plugin/Transpiler-System erfolgt und alle Dialekte aus dem Kern (einschließlich Coffeescript) entfernt werden.

Ich verstehe nicht, warum überhaupt sprachspezifische Unterstützung benötigt wird? Würden Sie die Schrittdefinitionen nicht einfach als Teil Ihres Buildprozesses in JavaScript umwandeln?

398 sollte die Unterstützung jedes Transpilers vereinfachen

Ja, #398 wird dies beheben.

@henrify Das einzige, was zu Cucumber hinzugefügt werden muss, ist die Unterstützung von Schrittdefinitions-Snippets für andere Sprachen. Derzeit befinden sie sich standardmäßig in Vanilla JS und können in CS mit dem CLI-Flag --coffee ausgegeben werden.

Wir könnten einfach alle Nicht-JS-Snippets ganz weglassen (einschließlich CS?). Die Gedanken?

398 wurde zusammengeführt und wird in der nächsten Version verfügbar sein. Die TypeScript-Unterstützung ist in der README dokumentiert .

@jbpros, seit die Readme aktualisiert wurde, und dies zeigt sich deutlich in den Ergebnissen für "cucumber typescript" , ein Auszug:

Transpiler

-Schrittdefinitionen und Unterstützungsdateien können in anderen Sprachen geschrieben werden, die in Javascript transpiliert werden.
-Dies geschieht mit der CLI-Option --compiler <file_extension>:<module_name> . Für CoffeeScript 1.10.0,
-Dies geschieht mit --compiler coffee:coffee-script/register .
Schrittdefinitionen und Unterstützungsdateien können in anderen Sprachen geschrieben werden, die in Javascript transpiliert werden. Dies geschieht mit der CLI-Option --compiler <file_extension>:<module_name> .

KaffeeScript

Installieren Sie das Coffee-Script NPM-Paket und rufen Sie Cucumber mit --compiler coffee:coffee-script/register .

Typoskript

Installieren Sie das typescript-node NPM-Paket und rufen Sie Cucumber mit --compiler ts:typescript-node/register .

Wie üblich müssen alle Ihre Schrittdefinitions- und Unterstützungsdateien eine Funktion exportieren, die von Cucumber ausgeführt wird. So wird es in TS gemacht:

declare var module: any;
module.exports = function () {
 this.Given(/.*/, function () {
   // ...
 })
}

PogoScript

Installieren Sie das pogo NPM-Paket und rufen Sie Cucumber mit --compiler pogo:pogo .

Ist es wirklich erforderlich, typescript-node zu verwenden? Ist es möglich, die offiziell unterstützte tsc anstelle von typescript-node zu verwenden? Ich kenne die Unterschiede nicht, aber tsc wird offiziell von Microsoft unterstützt.

@Chris2011 ts-node ist nur ein Registrierungs-Hook für node.js, der die Kompilierung über tsc ausführt

OK danke.

@JoshuaKGoldberg wo ist der Auszug? Meine Suche hat es nicht gefunden.

Ein Beispiel, das Sie in die Gurkenjs mit Typoskript einführt:
https://github.com/AbraaoAlves/cucumber-protractor-typescript-boilerplate

Danke @AbraaoAlves für die Probe.
Leider funktioniert es nur mit cucumberjs 1. Der Winkelmesser-Gurken-Framework-Layer ist nicht mit dem cucumber2 rcs kompatibel.

So hängen Sie einen Screenshot im Gurkenbericht an. Ich verwende Typoskript-Sprache. Bitte helft mir jemand.

Bitte bestätigen Sie, ob es in Zukunft Kompatibilitätsprobleme mit Gurke + Winkelmesser + Typescript geben würde ... da wir die Kombination für unsere Implementierungen verwenden möchten.

@Rajazpandi
Mach so etwas in After

driver.takeScreenshot().then(data => {
        attach(new Buffer(data, 'base64'), 'image/png');
      }).catch(error => {
        info(error);
        throw error;
      });

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen in letzter Zeit keine Aktivität stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen