javascript - multiCapabilities 和 jasmine 重点测试

标签 javascript selenium testing jasmine protractor

故事:

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

我们的“本地”配置配置为在 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 ) - 但 Protractor 启动两个驱动程序 session - 一个用于 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 使用唯一一个配置了重点规范的功能?


使用当前最新的 protractor 3.0.0。

希望问题很清楚。如果您需要任何其他信息,请告诉我。

最佳答案

我想知道您是否可以做一些事情来包装 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');
        }
    };
}

然后当你写一个测试时,而不是使用像这样的东西:

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

我不知道这是否真的有效,只是把它扔在那里。事实上,当我回到我的测试计算机并尝试它时,我会对添加一个像 wip 这样的函数来代替 xit 来自动挂起我的 ATDD 感兴趣测试!

关于javascript - multiCapabilities 和 jasmine 重点测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34366223/

相关文章:

javascript - 无法读取删除按钮中 null 的属性 'addEventListener'

javascript - 加载的 Ajax 页面表中的 Codeigniter 分页

javascript - 使用 <a href> 提交 POST 表单的最简单的跨浏览器方式是什么?

python - 如何检查 GUI 应用程序是否在 Ubuntu 上运行?

ruby-on-rails - 预期响应为 <redirect>,但为 <200> 失败

javascript - 用鼠标在 gnuplot 中旋转动画图像

python - 如何在 Selenium Python 中使用 Firefox 配置文件

python - 如何使用 selenium python 检索元素的所有 css 属性?

selenium - Selenium webdriver 如何通过充满 JavaScript 的 http 响应来定位元素?

reactjs - 使用 Cypress React js 测试 Login Auth0