multiCapabilities和jasmine重点测试

时间:2015-12-19 01:12:33

标签: javascript selenium testing jasmine protractor

故事:

我们有一个相当庞大的端到端量角器测试代码库。我们有两个配置 - 一个是“本地” - 使用directConnect在Chrome和Firefox中运行测试,另一个是“远程” - 在远程selenium服务器上运行测试 - 在我们的案例中是BrowserStack。 / p>

我们的“本地”配置配置为在Chrome中运行一些测试,在Firefox中运行一些测试 - 因为我们实际上无法在Chrome中运行某些测试 - 例如,keyboard shortcuts don't work in Chrome+Mac。在解决链接的chromedriver问题之前,运行需要在Firefox中使用键盘快捷键的测试是一种解决方法。

以下是配置的相关部分:

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。

希望问题很清楚。如果您需要任何其他信息,请与我们联系。

2 个答案:

答案 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测试!

答案 1 :(得分:0)

  

有没有办法让量角器使用唯一一个配置了专注规格的功能?

根据relevant github issue不可能