Cucumber-js: Agregue soporte para TypeScript

Creado en 13 may. 2015  ·  33Comentarios  ·  Fuente: cucumber/cucumber-js

Creé una biblioteca con mecanografiado y mis pruebas también están escritas en mecanografiado. Realmente me gustaría probar cucumber.js y crear archivos de definición de pasos, con mecanografiado. Entonces, admite coffeescript y js, .ts también sería bueno.

Saludos

Chris

Comentario más útil

@jbpros desde que se actualizó el "cucumber typescript" , un extracto:

Transpiladores

-Las definiciones de pasos y los archivos de soporte se pueden escribir en otros lenguajes que se transpilen a javascript.
-Esto hecho con la opción CLI --compiler <file_extension>:<module_name> . Para CoffeeScript 1.10.0,
-esto se hace con --compiler coffee:coffee-script/register .
Las definiciones de pasos y los archivos de soporte se pueden escribir en otros idiomas que se adaptan a JavaScript. Esto se hace con la opción CLI --compiler <file_extension>:<module_name> .

CoffeeScript

Instale el paquete NPM coffee-script e invoque Cucumber con --compiler coffee:coffee-script/register .

Mecanografiado

Instale el paquete NPM del nodo mecanografiado e invoque Cucumber con --compiler ts:typescript-node/register .

Como de costumbre, todos los archivos de soporte y definición de pasos deben exportar una función para ser ejecutada por Cucumber. Así es como se hace en TS:

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

PogoScript

Instale el paquete pogo NPM e invoque Cucumber con --compiler pogo:pogo .

Todos 33 comentarios

¿Por qué no envías una solicitud de extracción @ Chris2011?

Seré solo un cliente de este proyecto, cuando haga cada solicitud de extracción de cada material que uso y falte alguno, entonces puedo crearlo por mi cuenta. Es solo una solicitud de función. Si alguien tiene tiempo y le gustaría hacerlo, ¿por qué no? Yo no, porque no tengo tiempo, tengo el mismo trabajo normal y otros proyectos y no quiero ser colaborador en cada proyecto que uso. Sry por las duras palabras tal vez, pero para mí está claro que no es posible ser un colaborador en cada proyecto, lo que uso. Tengo que entender la fuente y así sucesivamente.

Entiendo a @ Chris2011. Tal vez algún día alguien decida dedicar tiempo a implementar esto porque quiere ayudarlo o simplemente por diversión.

El escenario más realista es que esta solicitud de función permanece abierta hasta que alguien la necesita lo suficiente como para estar dispuesto a dedicar el tiempo y el esfuerzo para implementarla y enviar un PR.

Quizás. Gracias por tu opinión. En mi perspectiva, era lógico solicitar esta función porque TS será más popular durante 1 o 2 años. Y cuando usted o quienquiera que haya decidido implementar coffeescript también, ¿por qué no mecanografiar también?

Muchas gracias. Veremos que sucede...

En general, al igual que los formateadores, me gustaría tener compatibilidad con idiomas / dialectos para ser complementos de terceros en lugar de parte del núcleo (incluidos los CoffeeScript y PogoScript actuales).

TS +1

+1

¡Me gusta, por favor hazlo en algún momento!

: +1:

Ninguna cantidad de +1 o: +1: hará que esto suceda. Alguien tiene que enviar una solicitud de extracción.

: +1: @aslakhellesoy en el lugar

: 8ball: @samccone

@jbpros @aslakhellesoy, lo único que se debe hacer para admitir idiomas de terceros es implementar una forma de modificar:

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

Y luego cualquiera puede registrar cualquier transpilador en support/env.js por ejemplo
tal vez esta expresión regular debería eliminarse en absoluto?

Estoy feliz de ver esto. Puedo encontrar el archivo de características de coffeeScript pero no puedo encontrar dónde se implementan las definiciones de los pasos, por favor, ¿alguien podría darme algunos consejos sobre lo que se debe hacer?

@SeanFarrow Ya lo he hecho localmente. Solo tiene que modificar /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 y luego agregar cualquier transpilador a través de require hook

¿Quieres enviar un PR?

De: Aleh Kashnikau [mailto: [email protected]]
Enviado: 16 de agosto de 2015 a las 19:15
Para: pepino / cucumber-js [email protected]
Cc: Sean Farrow sean. [email protected]
Asunto: Re: [cucumber-js] Agregue soporte para TypeScript (# 335)

@SeanFa rrowhttps: //github.com/SeanFarrow Ya lo he hecho localmente. Solo tiene que modificar /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 y luego agregar cualquier transpiler a través de require hook

-
Responda a este correo electrónico directamente o véalo en Gi

@mkusher hay más. Para estar completo, los fragmentos de definiciones de pasos también deben estar disponibles en el lenguaje adicional (que actualmente no está hecho para PogoScript), consulte la marca CLI --coffee .

Realmente me gustaría que esto se hiciera a través de un sistema de complemento / transpilador de todos modos y eliminar todos los dialectos del núcleo (incluido coffeescript).

No entiendo por qué se necesita apoyo específico en un idioma. ¿No transpilarías las definiciones de los pasos a JavaScript como parte de tu proceso de compilación?

398 debería simplificar el soporte de cualquier transpiler

Sí, el # 398 solucionará esto.

@henrify lo único que "necesita" agregarse a Cucumber es la compatibilidad con fragmentos de definición de pasos para otros idiomas. Actualmente están en Vanilla JS de forma predeterminada y se pueden generar en CS con la bandera --coffee CLI.

Podríamos simplemente eliminar los fragmentos que no sean de JS por completo (¿incluido CS?). ¿Pensamientos?

398 se ha fusionado y estará disponible en la próxima versión. La compatibilidad con TypeScript está documentada en el archivo README .

@jbpros desde que se actualizó el "cucumber typescript" , un extracto:

Transpiladores

-Las definiciones de pasos y los archivos de soporte se pueden escribir en otros lenguajes que se transpilen a javascript.
-Esto hecho con la opción CLI --compiler <file_extension>:<module_name> . Para CoffeeScript 1.10.0,
-esto se hace con --compiler coffee:coffee-script/register .
Las definiciones de pasos y los archivos de soporte se pueden escribir en otros idiomas que se adaptan a JavaScript. Esto se hace con la opción CLI --compiler <file_extension>:<module_name> .

CoffeeScript

Instale el paquete NPM coffee-script e invoque Cucumber con --compiler coffee:coffee-script/register .

Mecanografiado

Instale el paquete NPM del nodo mecanografiado e invoque Cucumber con --compiler ts:typescript-node/register .

Como de costumbre, todos los archivos de soporte y definición de pasos deben exportar una función para ser ejecutada por Cucumber. Así es como se hace en TS:

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

PogoScript

Instale el paquete pogo NPM e invoque Cucumber con --compiler pogo:pogo .

¿Es realmente necesario utilizar mecanografiado-nodo? ¿Es posible utilizar el tsc oficial admitido en lugar de mecanografiado-nodo? No conozco las diferencias, pero tsc es compatible oficialmente con Microsoft.

@ Chris2011 ts-node es solo un enlace de registro para node.js que ejecutará la compilación a través de tsc

OK gracias.

@JoshuaKGoldberg ¿de dónde está el extracto? Mis búsquedas no han podido encontrarlo.

Una muestra para guiarlo en el cucumberjs con el uso de mecanografiado:
https://github.com/AbraaoAlves/cucumber-protractor-typescript-boilerplate

Gracias @AbraaoAlves por la muestra.
Desafortunadamente, solo funciona con cucumberjs 1. La capa transportador-pepino-marco no es compatible con cucumber2 rcs.

cómo adjuntar captura de pantalla en el informe de pepino. Estoy usando lenguaje mecanografiado. Por favor, que alguien me ayude.

Confirme si habrá problemas de compatibilidad pepino + transportador + mecanografiado en el futuro ... ya que planeamos usar la combinación para nuestras implementaciones ...

@Rajazpandi
Haz algo como esto en After

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

Este hilo se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de que se cerró. Abra un nuevo problema para errores relacionados.

¿Fue útil esta página
0 / 5 - 0 calificaciones