Cucumber-js: Permitir módulos preestablecidos de pepino en require-module

Creado en 13 abr. 2021  ·  4Comentarios  ·  Fuente: cucumber/cucumber-js

Estoy tratando de crear un módulo externo donde puedo configurar un ajuste preestablecido para ejecutar la prueba de pepino.
Este módulo externo tiene @cucumber/cucumber como peerDependency, por lo que no lo instala directamente. Por lo tanto, esta dependencia permite que el ajuste preestablecido establezca el constructor World y agregue Given , When , Then al alcance global, por lo que podemos tener definiciones de pasos más limpios.

Todo funciona cuando tengo banderas de opciones de pepino-js que se vinculan a un archivo local como cucumber-js --require ./test-preset.setup.js , sin embargo, una vez que me muevo al mismo ajuste preestablecido a un módulo externo y lo requiero como cucumber-js --require-module cucumber-preset-foo , el proceso termina con el mismo error presentado en # 1326.

Pude detectar algo en el código fuente de cli donde se llama supportCodeLibraryBuilder.reset justo después de que se requieran estos módulos externos a través de supportCodeRequiredModules , lo que podría hacer inviable la interacción con la instancia de pepino en ejecución una vez que se restablecen sus datos justo después de.

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

Quizás haya una razón específica para este diseño, sin embargo, me gustaría verificar si habría alguna implicación al llamar al método de reinicio antes de requerir los módulos, para que podamos hacer uso de esos ajustes preestablecidos portátiles. Puedo ver que este tipo de característica beneficia a algunos usuarios que deseen usar ajustes preestablecidos para entornos de desarrollo específicos, como react e2e, por ejemplo.

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

Todos 4 comentarios

Hola @zanona

Tu módulo parece interesante
Tu investigación sobre ese tema también

Como ya tiene una buena idea de lo que está sucediendo y cómo se puede arreglar, ¿cree que podría abrir un PR para eso y apoyar la discusión en torno a eso?

Hmm, no veo ningún problema con mover el restablecimiento justo antes del módulo require. Ser after fue más un producto de para qué se usó require-module en el pasado, que tenía el caso de uso principal de configurar transpilers (mecanografiado / babel)

Suena genial chicos.
Seguramente puedo preparar un PR, tal vez podamos considerarlo como una característica en lugar de un error, para poder preparar pruebas dirigidas al usuario para que pueda crear un ajuste preestablecido personalizado y asegurarme de que el ejecutor de pruebas lo entienda.

Alternativamente, ¿podríamos simplemente intercambiar esas dos líneas y observar las pruebas fallidas?

¿Cómo preferiría hacerlo?

Con respecto al pepino, esto sigue siendo un error ya que hay un error inesperado al intentar cargar un módulo de forma regular, que en realidad debería funcionar.

Pero aún puede evaluar su PR como una mejora con una prueba de alcance como describió, en realidad me gusta la idea, que tendría el beneficio de solucionar ese problema también. ¿Qué piensas?

Con respecto a la posibilidad de intercambiar las dos líneas, ese podría ser un primer buen punto de partida en mi opinión :)

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