multiCapabilities和jasmine重点测试

ale*_*cxe 10 javascript testing selenium jasmine protractor

故事:

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

我们的"本地"配置配置为在Chrome中运行一些测试,在Firefox中运行一些测试 - 因为我们实际上无法在Chrome中运行某些测试 - 例如,键盘快捷键在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
        }
    ],

    // ...
};
Run Code Online (Sandbox Code Playgroud)

问题:

现在,问题是,如果我正在调试单个测试,或者想要运行单个测试 - 我标记它是专注的(通过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

...
Run Code Online (Sandbox Code Playgroud)

问题:

有没有办法告诉量角器使用唯一一个配置了焦点规范的功能?


使用目前最新的protractor3.0.0.

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

mar*_*770 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');
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

然后,当您编写测试时,不要it使用以下内容:

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

我不知道这是否真的有效,只是把它扔在那里。事实上,当我回到我的测试计算机并尝试它时,我有兴趣添加一个功能,例如wip使用而不是xit自动挂起我的 ATDD 测试!