MultiCapabilities и тесты, сфокусированные на жасмине

История:

У нас есть довольно большая сквозная тестовая кодовая страница. У нас есть две конфигурации: одна - "локальная" - для запуска тестов в Chrome и Firefox с помощью directConnect, а другая - "remote" - для запуска тестов на удаленном сервере selenium - BrowserStack в нашем случае.

Наша "локальная" конфигурация настроена для запуска некоторых тестов в Chrome и некоторых в Firefox - потому что мы действительно не можем запускать некоторые тесты в Chrome - например, сочетания клавиш не работают в Chrome + Mac. Запуск тестов, требующих использования сочетаний клавиш в Firefox, является обходным решением до тех пор, пока проблема с chromedriver не будет решена.

Вот соответствующая часть конфигурации:

var firefox_only_specs = [
    "../specs/some_spec1.js",
    "../specs/some_spec2.js",
    "../specs/some_spec3.js"
];

exports.config = {
    directConnect: true,

    multiCapabilities: [
        {
            browserName: "chrome",
            chromeOptions: {
                args: ["incognito", "disable-extensions", "start-maximized"]
            },
            specs: [
                "../specs/**/*.spec.js",
                "../specs/**/**/*.spec.js",
                "../specs/**/**/**/*.spec.js"
            ],
            exclude: firefox_only_specs
        },
        {
            browserName: "firefox",
            specs: firefox_only_specs
        }
    ],

    // ...
};

Проблема:

Теперь проблема заключается в том, что если я отлаживаю один тест или хочу запустить один тест - я отмечаю, что он сфокусирован (через fdescribe/fit) - но транспортир запускает два сеансы драйвера - один для Chrome, а другой для Firefox, используя обе настроенные возможности:

Running "protractor:local" (protractor) task
[launcher] Running 2 instances of WebDriver

...
------------------------------------
[chrome #1] PID: 2329
[chrome #1] Using ChromeDriver directly...
[chrome #1] Spec started

...

------------------------------------
[firefox #2] PID: 2330
[firefox #2] Using FirefoxDriver directly...
[firefox #2] Spec started

...

Вопрос:

Есть ли способ сказать транспортиру, чтобы использовать только одну возможность, которая имеет сфокусированную спецификацию?


Использование текущего последнего protractor 3.0.0.

Надеюсь, что вопрос ясен. Дайте мне знать, если вам нужна дополнительная информация.

Ответ 1

Интересно, можете ли вы сделать что-то, чтобы обернуть операторы it, например:

onPrepare: function() {
    browser.getCapabilities().then(function(caps) {
        global.browserName = caps.caps_.browserName;
    });

    global.firefoxOnly = function(name, testFunction) {
        if (browserName === 'firefox') {
            return it(name, testFunction);
        } else {
            return xit(name, testFunction).pend('firefox only');
        }
    };
}

Затем, когда вы пишете тест, вместо it используйте что-то вроде:

describe('when I do something', function() {
    firefoxOnly('it should do the right thing', function() {
        doSomething();
        expect(thing).toBe(right);
    )};
});

Я понятия не имею, действительно ли это работает, просто выбросив его туда. Фактически, когда я вернусь на свой тестовый компьютер и попробую его, мне будет интересно добавить функцию типа wip вместо xit, чтобы автоматически отложить мои тесты ATDD!

Ответ 2

Есть ли способ сказать транспортиру, чтобы использовать только одну возможность, которая имеет сфокусированную спецификацию?

В соответствии с актуальной проблемой github это невозможно.