Cucumber-js: Veuillez ajouter la prise en charge de TypeScript

Créé le 13 mai 2015  ·  33Commentaires  ·  Source: cucumber/cucumber-js

J'ai créé une bibliothèque avec tapuscrit et mes tests sont également écrits en tapuscrit. J'aimerais vraiment essayer cucumber.js et créer des fichiers de définition d'étape, avec un script dactylographié. Donc, vous soutenez coffeescript et js, .ts serait bien aussi.

Salutations

Chris

Commentaire le plus utile

@jbpros depuis que le fichier readme a été mis à jour, et cela apparaît en bonne place dans les résultats pour "cucumber typescript" , un extrait :

Transpileurs

-Les définitions d'étapes et les fichiers de support peuvent être écrits dans d'autres langues qui se transpilent en javascript.
-Ceci est fait avec l'option CLI --compiler <file_extension>:<module_name> . Pour CoffeeScript 1.10.0,
-c'est fait avec --compiler coffee:coffee-script/register .
Les définitions d'étapes et les fichiers de support peuvent être écrits dans d'autres langues qui se transpilent en javascript. Ceci est fait avec l'option CLI --compiler <file_extension>:<module_name> .

CoffeeScript

Installez le package NPM coffee-script et appelez Cucumber avec --compiler coffee:coffee-script/register .

Manuscrit

Installez le package NPM typescript-node et appelez Cucumber avec --compiler ts:typescript-node/register .

Comme d'habitude, tous vos fichiers de définition d'étape et de support doivent exporter une fonction à exécuter par Cucumber. Voici comment cela se passe dans TS :

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

PogoScript

Installez le package pogo NPM et appelez Cucumber avec --compiler pogo:pogo .

Tous les 33 commentaires

Pourquoi n'envoyez-vous pas une pull request @Chris2011

Je ne serai qu'un client de ce projet, lorsque je ferai chaque pull request de chaque élément que j'utilise et qu'il en manque, que je pourrai le créer moi-même. Il ne s'agit que d'une demande de fonctionnalité. Si quelqu'un a le temps et aimerait le faire, pourquoi pas. Moi non, car je n'ai pas le temps, j'ai le même travail normal et d'autres projets et je ne veux pas être contributeur sur chaque projet que j'utilise. Désolé pour les mots durs peut-être mais pour moi il est clair qu'il n'est pas possible d'être contributeur sur chaque projet, ce que j'utilise. Je dois comprendre la source et ainsi de suite.

Je comprends @Chris2011. Peut-être qu'un jour quelqu'un décidera de passer du temps à mettre cela en œuvre parce qu'il veut vous aider, ou juste pour le plaisir.

Le scénario le plus réaliste est que cette demande de fonctionnalité reste ouverte jusqu'à ce que quelqu'un en ait suffisamment besoin pour être prêt à consacrer du temps et des efforts à sa mise en œuvre et à envoyer un PR.

Peut-être. Merci pour votre avis. De mon point de vue, ce n'était que logique de demander cette fonctionnalité car TS sera plus populaire que pendant 1 ou 2 ans. Et quand vous ou quelqu'un d'autre avez décidé d'implémenter également coffeescript, pourquoi pas dactylographié aussi ?

Merci beaucoup. On verra ce qu'il se passe...

En général - tout comme les formateurs - j'aimerais que la prise en charge du langage/dialecte soit des plugins tiers au lieu d'une partie du noyau (y compris le CoffeeScript et le PogoScript actuels).

TS +1

+1

Aimez-le, veuillez le faire un certain temps !!!

:+1:

Aucun montant de +1 ou :+1: ne fera que cela se produise. Quelqu'un doit soumettre une demande de tirage.

:+1: @aslakhellesoy place sur

:8ball: @samccone

@jbpros @aslakhellesoy la seule chose à faire pour prendre en charge les langages tiers est de mettre en œuvre un moyen de modifier :

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

Et puis n'importe qui peut enregistrer n'importe quel transpiler dans support/env.js par exemple
peut-être que cette regex devrait être supprimée du tout?

Je suis content de regarder ça. Je peux trouver le fichier de fonctionnalité coffeeScript mais je ne trouve pas où les définitions d'étapes sont implémentées, s'il vous plaît, quelqu'un pourrait-il me donner quelques conseils sur ce qui doit être fait ?

@SeanFarrow Je l'ai déjà fait localement. Vous n'avez qu'à modifier /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 puis ajouter n'importe quel transpiler via le crochet requis

Allez-vous envoyer un pr?

De : Aleh Kashnikau [mailto:[email protected]]
Envoyé : 16 août 2015 19:15
À : concombre/concombre-js [email protected]
Cc : Sean Farrow Sean. [email protected]
Objet : Re : [concombre-js] Veuillez ajouter la prise en charge de TypeScript (#335)

@SeanFa rrowhttps://github.com/SeanFarrow Je l'ai déjà fait localement. Vous n'avez qu'à modifier /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 puis ajouter n'importe quel transpiler via require hook

-
Répondez directement à cet e-mail ou consultez-le sur Gi tHubhttps://github.com/cucumber/cucumber-js/issues/335#issuecomment -131598410.

@mkusher il y a plus que ça. Pour être complet, les extraits de définitions d'étape doivent également être disponibles dans le langage supplémentaire (ce qui n'est actuellement pas fait pour PogoScript), voir l'indicateur CLI --coffee .

J'aimerais vraiment que cela se fasse via un système de plugin/transpiler de toute façon et supprime tous les dialectes du noyau (y compris coffeescript).

Je ne comprends pas pourquoi une prise en charge spécifique à la langue est même nécessaire ? Ne voudriez-vous pas simplement transpiler les définitions d'étapes en JavaScript dans le cadre de votre processus de construction ?

398 devrait simplifier la prise en charge de tout transpileur

Oui, le n° 398 résoudra ce problème.

@henrify la seule chose qui "doit" être ajoutée à Cucumber est la prise en charge de l'extrait de définition d'étape pour d'autres langues. Actuellement, ils sont dans vanilla JS par défaut et peuvent être affichés dans CS avec le drapeau CLI --coffee .

Nous pourrions simplement supprimer complètement les extraits non JS (y compris CS ?). Les pensées?

398 a été fusionné et sera disponible dans la prochaine version. La prise en charge de TypeScript est documentée dans le README .

@jbpros depuis que le fichier readme a été mis à jour, et cela apparaît en bonne place dans les résultats pour "cucumber typescript" , un extrait :

Transpileurs

-Les définitions d'étapes et les fichiers de support peuvent être écrits dans d'autres langues qui se transpilent en javascript.
-Ceci est fait avec l'option CLI --compiler <file_extension>:<module_name> . Pour CoffeeScript 1.10.0,
-c'est fait avec --compiler coffee:coffee-script/register .
Les définitions d'étapes et les fichiers de support peuvent être écrits dans d'autres langues qui se transpilent en javascript. Ceci est fait avec l'option CLI --compiler <file_extension>:<module_name> .

CoffeeScript

Installez le package NPM coffee-script et appelez Cucumber avec --compiler coffee:coffee-script/register .

Manuscrit

Installez le package NPM typescript-node et appelez Cucumber avec --compiler ts:typescript-node/register .

Comme d'habitude, tous vos fichiers de définition d'étape et de support doivent exporter une fonction à exécuter par Cucumber. Voici comment cela se passe dans TS :

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

PogoScript

Installez le package pogo NPM et appelez Cucumber avec --compiler pogo:pogo .

Est-il vraiment nécessaire d'utiliser typescript-node ? Est-il possible d'utiliser le tsc officiellement pris en charge au lieu de typescript-node ? Je ne connais pas les différences mais tsc est officiellement pris en charge par Microsoft.

@Chris2011 ts-node est juste un crochet de registre pour node.js qui exécutera la compilation via tsc

OK merci.

@JoshuaKGoldberg d' où vient l'extrait ? Mes recherches n'ont pas réussi à le trouver.

Un exemple pour vous guider dans les cucumberjs avec l'utilisation dactylographiée :
https://github.com/AbraaoAlves/cucumber-protractor-typescript-boilerplate

Merci @AbraaoAlves pour l'échantillon.
Malheureusement, cela ne fonctionne qu'avec cucumberjs 1. La couche rapporteur-concombre-cadre n'est pas compatible avec le cucumber2 rcs.

comment joindre une capture d'écran dans un rapport sur le concombre. J'utilise le langage dactylographié. S'il vous plaît quelqu'un m'aide.

Veuillez confirmer s'il y aura des problèmes de compatibilité concombre + rapporteur + dactylographe à l'avenir... car nous prévoyons d'utiliser la combinaison pour nos implémentations.

@Rajazpandi
Faites quelque chose comme ça dans After

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

Ce fil a été automatiquement verrouillé car il n'y a eu aucune activité récente après sa fermeture. Veuillez ouvrir un nouveau problème pour les bogues liés.

Cette page vous a été utile?
0 / 5 - 0 notes