Cucumber-js: autoriser les modules prédéfinis de concombre sous require-module

Créé le 13 avr. 2021  ·  4Commentaires  ·  Source: cucumber/cucumber-js

J'essaie de créer un module externe où je peux configurer un préréglage pour exécuter un test de concombre.
Ce module externe a @cucumber/cucumber tant que peerDependency, il ne l'installe donc pas directement. Par conséquent, cette dépendance permet au préréglage de définir le constructeur World ainsi que d'ajouter Given , When , Then à la portée globale, afin que nous puissions avoir définitions d'étapes plus propres.

Tout fonctionne lorsque j'ai des drapeaux d'options cucumber-js liés à un fichier local en tant que cucumber-js --require ./test-preset.setup.js , cependant, une fois déplacé vers le même préréglage vers un module externe et l'exigeant en tant que cucumber-js --require-module cucumber-preset-foo , le processus se termine par la même erreur présentée au #1326.

Je pourrais repérer quelque chose sur le code source cli où supportCodeLibraryBuilder.reset est appelé juste après que ces modules externes soient requis via supportCodeRequiredModules , ce qui pourrait rendre inviable l'interaction avec l'instance de concombre en cours d'exécution une fois ses données réinitialisées juste après.

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

Peut-être y a-t-il une raison spécifique à cette conception, mais je voudrais vérifier s'il y aurait une implication dans l'appel de la méthode de réinitialisation avant d'exiger les modules, afin que nous puissions utiliser ces préréglages portables? Je peux voir ce genre de fonctionnalité bénéficier à certains utilisateurs qui souhaitent utiliser des préréglages pour des environnements de développement spécifiques tels que React e2e, par exemple.

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

Tous les 4 commentaires

Salut @zanona

Ton module a l'air intéressant
Votre enquête sur cette question aussi

Comme vous avez déjà une bonne idée de ce qui se passe et comment cela peut être résolu, pensez-vous que vous pourriez ouvrir un PR pour cela, et pour soutenir la discussion autour de cela ?

Hmm, je ne vois aucun problème à déplacer la réinitialisation juste avant le module requis. Le fait d'être après était davantage un produit de ce à quoi le module require était utilisé dans le passé, qui avait pour principal cas d'utilisation la configuration de transpileurs (typescript / babel)

Ça sonne bien les gars.
Je peux sûrement préparer un PR, peut-être que nous pouvons le définir comme une fonctionnalité plutôt qu'un bogue, afin que je puisse préparer des tests adaptés à l'utilisateur pouvant créer un préréglage personnalisé et s'assurer que le testeur le comprend ?

Alternativement, nous pourrions simplement échanger ces deux lignes et surveiller les tests qui échouent ?

Comment préféreriez-vous vous y prendre ?

Concernant le concombre, cela reste un bug car il y a une erreur inattendue en essayant de charger un module de manière régulière, cela devrait effectivement fonctionner.

Mais vous pouvez toujours définir vos relations publiques en tant qu'amélioration avec un test étendu comme vous l'avez décrit - j'aime bien l'idée - ce qui aurait également l'avantage de résoudre ce problème. Qu'est-ce que tu penses?

Concernant la possibilité d'intervertir les deux lignes, cela pourrait être un premier bon point de départ IMO :)

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