Как получить теги в огуречном мире.объект - PullRequest
0 голосов
/ 29 января 2020

Итак, у меня есть структура Cucumberjs / puppeteer. Мне было интересно, есть ли способ получить доступ к переданному тегу огурца (пример: @smokeTest) в объекте мира.

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Согласно документации: 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' ]
    }
0 голосов
/ 19 апреля 2020

Вы можете получить доступ к списку всех тегов, а также другой информации о сценарии в хуке Before, используя объект pickle от Gherkin :

Before(function ({ pickle }) {
    this.tags = pickle.tags.map(i => i.name);
});

Как только К объекту мира добавляется массив tags, доступ к которому можно получить из любого определения шага в вашем сценарии.

Демонстрация в реальном времени: https://testjam.io/?p=od8QsClhFjmZB6zOsEyI

...