Cucumber-js: разрешить предустановленные модули огурца в require-module

Созданный на 13 апр. 2021  ·  4Комментарии  ·  Источник: cucumber/cucumber-js

Я пытаюсь создать внешний модуль, в котором я могу настроить предустановку для запуска теста огурца.
Этот внешний модуль имеет @cucumber/cucumber в качестве peerDependency, поэтому он не устанавливает его напрямую. Следовательно, эта зависимость позволяет предустановке установить конструктор World а также добавить Given , When , Then в глобальную область видимости, чтобы мы могли иметь более чистые определения шагов.

Все это работает, когда у меня есть флаги опции cucumber-js, связывающиеся с локальным файлом как cucumber-js --require ./test-preset.setup.js , однако после перехода к той же предустановке на внешний модуль и запроса его как cucumber-js --require-module cucumber-preset-foo процесс заканчивается той же ошибкой, представленной в # 1326.

Я мог заметить что-то в исходном коде cli, где supportCodeLibraryBuilder.reset вызывается сразу после того, как эти внешние модули требуются через supportCodeRequiredModules , что может сделать незаметным взаимодействие с запущенным экземпляром огурца после сброса его данных сразу после.

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

Возможно, существует определенная причина для этого дизайна, однако я хотел бы проверить, будет ли какое-либо значение, вызывающее метод сброса, прежде чем требовать модули, чтобы мы могли использовать эти переносимые пресеты? Я вижу, что такая функция приносит пользу некоторым пользователям, которые хотели бы использовать предустановки для определенных сред разработки, таких как, например, react e2e.

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

Все 4 Комментарий

Привет @zanona

Ваш модуль выглядит интересно
Ваше расследование по этому вопросу тоже

Поскольку у вас уже есть хорошее представление о том, что происходит и как это можно исправить, как вы думаете, можете ли вы открыть PR для этого и поддержать дискуссию по этому поводу?

Хм, я не вижу проблем с перемещением сброса непосредственно перед require-module. Это то, что after было больше продуктом того, для чего в прошлом использовался require-module, который в основном использовался для настройки транспиляторов (машинописный текст / babel).

Звучит здорово, ребята.
Я определенно могу подготовить PR, возможно, мы сможем рассматривать его как функцию, а не ошибку, поэтому я могу подготовить тесты, рассчитанные на то, чтобы пользователь мог создать собственный пресет и убедиться, что участник тестирования его понимает?

В качестве альтернативы, мы могли бы просто поменять местами эти две линии и наблюдать за неудачными тестами?

Как бы вы предпочли это сделать?

Что касается огурца, это остается ошибкой, поскольку при попытке загрузить модуль обычным способом возникает непредвиденная ошибка, которая действительно должна работать.

Но вы все равно можете охарактеризовать свой PR как улучшение с помощью теста с ограниченным объемом, как вы описали - мне действительно нравится эта идея, - которая также поможет исправить эту проблему. Что вы думаете?

Что касается возможности поменять местами две строки, это может быть первой хорошей отправной точкой, ИМО :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги