Согласно документации: https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/world.md, мир будет доступен как «this» как в файле world, так и в файле ловушек.
Опция 1:
Согласно По вашему запросу вы можете попробовать ниже, чтобы выбрать, какие теги вы выполняете в настоящее время:
1) Создайте файл с именем hooks 2) Добавить
Before({tags: '@tagName'}, async function() {
this['tags'] = [];
this['tags'].push('@tagName');
console.log(this);
});
3) В этом случае, когда ваш сценарий содержит совпадение имени тега с именем тега функции Before в файле ловушек, соответствующее имя тега будет добавлено в объект 'this'.
Ниже выводится вывод на консоль:
{
tags:[ '@tagName' ]
}
Здесь tagName является примером, и его можно заменить любым именем (согласно вашему запросу это @SmokeTest), и результат будет в следующем формате:
{
tags:[ '@SmokeTest' ]
}
Вариант 2: Надеюсь, что вы передают имя тега в ваших npm скриптах, таких как --tags=@tagName. Если вы поддерживаете process.argv, он напечатает все команды, которые вы передаете в этом скрипте npm, включая '--tags=@tagName' в формате Array.
Используя этот массив, вы можете повторить al oop, основываясь на его l ength и извлеките tagName из совпадающей строки, как показано ниже:
let option: string;
process.argv.forEach(arg => {
if (arg.includes('tags')) {
option = arg;
this['tags'] = [];
this['tags'].push(option.replace('--tags=', ''));
}
});
Теперь, если вы утешите «this», он будет включать ключ с именем «tags», как показано ниже:
{
tags:[ '@tagName' ]
}