Cucumber-js: permitir módulos predefinidos de pepino em módulo requerido

Criado em 13 abr. 2021  ·  4Comentários  ·  Fonte: cucumber/cucumber-js

Estou tentando criar um módulo externo onde posso configurar uma predefinição para executar o teste do pepino.
Este módulo externo tem @cucumber/cucumber como um peerDependency, então ele não o instala diretamente. Portanto, esta dependência permite que a predefinição defina o construtor World , bem como adicione Given , When , Then ao escopo global, para que possamos ter definições de etapas mais claras.

Tudo funciona quando tenho sinalizadores de opção cucumber-js vinculando a um arquivo local como cucumber-js --require ./test-preset.setup.js , no entanto, ao passar para a mesma predefinição em um módulo externo e exigir que seja cucumber-js --require-module cucumber-preset-foo , o processo termina com o mesmo erro apresentado em # 1326.

Eu poderia identificar algo no código-fonte cli onde supportCodeLibraryBuilder.reset está sendo chamado logo após esses módulos externos serem exigidos por supportCodeRequiredModules , o que poderia tornar inviável a interação com a instância de pepino em execução, uma vez que seus dados estão sendo redefinidos logo depois.

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

Talvez haja uma razão específica para este design, no entanto, gostaria de verificar se haveria alguma implicação em chamar o método de redefinição antes de exigir os módulos, para que possamos fazer uso dessas predefinições portáteis. Posso ver esse tipo de recurso beneficiando alguns usuários que gostariam de usar predefinições para ambientes de desenvolvimento específicos como o react e2e, por exemplo.

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

Todos 4 comentários

Oi @zanona

Seu módulo parece interessante
Sua investigação sobre esse problema também

Como você já tem uma boa ideia do que está acontecendo e como pode ser consertado, você acha que poderia abrir um PR para isso e apoiar a discussão em torno disso?

Hmm, não vejo nenhum problema em mover a reinicialização para um pouco antes de exigir o módulo. Ser after era mais um produto do que o módulo require era usado no passado, que tinha o caso de uso principal de configurar transpiladores (typescript / babel)

Parece ótimo, pessoal.
Certamente posso preparar um PR, talvez possamos defini-lo como um recurso em vez de um bug, para que eu possa preparar testes com escopo para que o usuário seja capaz de criar uma predefinição personalizada e ter certeza de que o executor de teste a compreende.

Alternativamente, poderíamos simplesmente trocar essas duas linhas e observar os testes que falharam.

Como você prefere fazer isso?

Em relação ao pepino, isso continua sendo um bug, pois há um erro inesperado ao tentar carregar um módulo de forma regular, que deve realmente funcionar.

Mas você ainda pode definir o escopo de seu PR como um aprimoramento com um teste de escopo como você descreveu - na verdade, gosto da ideia - que teria o benefício de corrigir esse problema também. O que você acha?

Em relação à possibilidade de trocar as duas linhas, esse poderia ser um primeiro bom ponto de partida IMO :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jfstephe picture jfstephe  ·  4Comentários

arjunjh10 picture arjunjh10  ·  7Comentários

stefdelec picture stefdelec  ·  6Comentários

lamartire picture lamartire  ·  6Comentários

igniteram picture igniteram  ·  7Comentários