Использование cucumberOpts.tags с Protractor + CucumberJs + Gulp

Привет всем!

У меня установлены следующие версии:

"protractor": "~2.5.1",
"gulp-protractor": "1.0.0",
"cucumber": "~0.7.0",

Я установил это, потому что в проекте есть версия ‹ 4 NPM, и Protractor 3.0.0 нуждается в этом.

И у меня есть следующее на моем protractor.conf.js

  framework: 'cucumber',
    //frameworkPath: require.resolve('protractor-cucumber-framework'),
    cucumberOpts: {
        require: 'features/step_definitions/**/*.js',
        format: 'pretty',
        tags: '@Test',
    },

У меня задача gulp выглядит так:

var args = require('yargs').argv;

module.exports = function(gulp, plugins) {
    return function (done) {
        var protractorConfig = '',
            testConfig = '',
            environment = args.environment || 'devel',
           // tag = args.tag || 'smoke',
            baseUrl;

        if (!args.baseUrl) {
            baseUrl = 'http://test.me/frontend-build-tests/';
        } else if (args.baseUrl.match(/^(?:https?\:)?\/\//)) {
            baseUrl = args.baseUrl;
        } else {
            baseUrl = 'http://tests..me/frontend-build-tests/' + args.baseUrl + '/';
        }

        switch(environment) {
            case 'devel' :
                protractorConfig = 'e2e/protractor.config.devel.js';
                testConfig = '../config/devel';
            break;
            case 'live'  :
                protractorConfig = 'e2e/protractor.config.live.js';
                testConfig = '../config/live';
            break;
            case 'remote' :
                protractorConfig = 'e2e/protractor.config.remote.js';
                testConfig = '../config/live';
            break;
            default:
            case 'build' :
                protractorConfig = 'e2e/protractor.config.build.js';
                testConfig = '../config/build';
            break;
        }

        gulp.src([
            //'./e2e/page-objects/*.js'
            'e2e/features/*.feature'
        ])
        .pipe(plugins.protractor.protractor({
            configFile: protractorConfig,
            args: [
                '--verbose',
                '--no-stackTrace',
                //'--cucumberOpts.tags', tag,
                '--params.test.config', testConfig,
                '--baseUrl', baseUrl
            ]
        }))
        .on('error', function() {
            done();
            process.exit(1);
        });
    };
};

Я запускаю это с помощью команды npm run test-e2e, которая запускает скрипт, содержащий только эти 2 строки.

#!/bin/bash -ex

gulp test-e2e "$@"

В приведенной выше конфигурации вы можете заметить, что я закомментировал параметр --cucumberOpts.tags, потому что я не мог заставить его работать, когда я запускаю тест с параметром npm run test-e2e -- --baseUrl http://local.me --tag "@Test", он как будто не слышит этот параметр, потому что я вижу, что он выполняется все тесты а не помеченные.....

Итак... что я здесь делаю не так?


person Bruno Soko    schedule 16.12.2015    source источник
comment
Что, если бы вы опустили аргумент --baseUrl http://local.me и оставили только аргумент --tag — какая разница? Спасибо.   -  person alecxe    schedule 17.12.2015
comment
Нет разницы! но только что нашел, что я делаю неправильно! Я отвечу на свой вопрос!   -  person Bruno Soko    schedule 17.12.2015


Ответы (1)


Я оставляю ответ на свой собственный пост на случай, если кто-то столкнется с той же проблемой, обнаружил, что модифицируйте, как показано ниже, я заставил его работать, очевидно, порядок параметров был неправильным, и нам не нужно заключить в кавычки @ANYTHING...

задача глотка:

  var protractorConfig = '',
        testConfig = '',
        environment = args.environment || 'devel',
        tag = args.tag || '@Sanity',
        baseUrl;

задача глотка:

 .pipe(plugins.protractor.protractor({
            configFile: protractorConfig,
            args: [
                '--verbose',
                '--no-stackTrace',
                '--params.test.config', testConfig,
                '--baseUrl', baseUrl,
                '--cucumberOpts.tags', tag
            ]
        }))

Файл конфигурации транспортира:

framework: 'cucumber',
//frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
    require: 'features/step_definitions/**/*.js',
    format: 'pretty'
},

И команда должна выглядеть так

npm run test-e2e -- --baseUrl http://local.me/e2e/cases/devel/ --tag @Sanity

person Bruno Soko    schedule 17.12.2015