Tengo un proyecto simple que es básicamente...
export class Application{ constructor(...){ ... } async run(){ console.log("I Ran!"); } }Quiero ejecutar esto usando Cukes, así que sigoestos pasos y hago que funcione (observe la extensión .cjs para indicarle al nodo que es un archivo cjs)
// features/basic.feature Feature: Hello World Scenario: Hello World Given I start the app When it is running Then I see the console // features/support/steps.cjs const { Given, When, Then } = require("@cucumber/cucumber"); Given("I start the app", function () { // TODO: Setup child process return }); When("it is running", function () { // TODO: Execute using Worker return }); Then("I see the console", function () { // assert.equal(this.variable, number); return }); Ejecutaría esto usando cucumber-js --require features/support/steps.cjs
Pero ahora quiero importar la aplicación y ejecutar la aplicación en un paso. Como no puedo importar un archivo ESM (.mjs) usando .cjs, no estoy seguro de cómo hacerlo. Intenté crear una versión .mjs del archivo de pasos, pero tampoco puedo hacer que funcione. También probé cucumber-js --require-module features/support/steps.mjs pero aún así no funcionó.
¿Cómo uso Cukes con un proyecto de estilo ESM?
Hasta donde yo sé, esto sigue siendo un problema. Hay una versión experimental de cukes para trabajar, que comenzó a abordar estos problemas (cukes versión 7.2.0), que podría comenzar a usar para ver si puede abordar los cambios que desea implementar.
Sin embargo, la versión 8.0.0 está en camino y aborda muchos de estos problemas en particular. El nuevo lanzamiento saldrá en los próximos días (crucemos los dedos).
Aquí está el enlace para todo el trabajo que han hecho hasta la fecha para abordar los problemas que está experimentando: cucumber-js agrega compatibilidad con ESM (toma 2)