【问题标题】:multiCapabilities and jasmine focused testsmultiCapabilities 和 jasmine 重点测试
【发布时间】:2015-12-19 01:12:33
【问题描述】:

故事:

我们有一个相当庞大的端到端量角器测试代码库。我们有两个配置 - 一个是“本地” - 使用 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) - 但量角器会启动两个驱动程序会话 - 一个用于 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。

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

【问题讨论】:

  • 没有你的问题的答案,但在我看来......你不能。在测试开始执行之前读取配置,因此multiCapabilities 中的所有浏览器都将启动。一个痛苦的解决方法是更改​​“运行器”或执行脚本以具有不同的配置或根据命令行参数动态设置配置。 IE。它没有使用工具/框架的内置功能,但您可以使用没有 Chrome 设置的差异配置执行。
  • @aneroid 谢谢你的意见。是的,目前还不清楚如何解决这个问题..可能我们必须有一个单独的自定义命令行参数,根据值,运行其中一项或全部功能..
  • 请记住,如果需要,您可以在 protractor.conf.js 中使用 getMultiCapabilities 函数动态生成功能
  • 遇到了同样的问题。最后找到了一种覆盖功能的方法,以防我启用了任何焦点测试(选择浏览器的逻辑有点复杂,因为我的大多数测试都位于正确的文件夹中,以要运行的浏览器命名)。
  • @aneroid 我同意,看起来像是时间问题。当jasmine真正运行时,能力已经形成。在specs 中找不到一个点,我可以拥有我需要的一切,并且不运行没有集中测试的特定功能,并且只运行具有集中测试的功能。谢谢,很好。

标签: javascript selenium testing jasmine protractor


【解决方案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】:

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

    根据relevant github issue不可能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 2016-03-17
      • 2013-05-29
      • 2017-01-11
      • 2023-04-01
      • 2014-05-04
      • 1970-01-01
      相关资源
      最近更新 更多