故事:
我们有一个相当巨大的端到端量角器测试代码库.我们有两个配置 – 一个是“本地” – 使用directConnect在Chrome和Firefox中运行测试,另一个是“远程” – 在远程硒服务器上运行测试 – BrowserStack.
我们的“本地”配置被配置为在Chrome和一些在Firefox中运行一些测试 – 因为我们真的不能在Chrome中运行一些测试 – 例如keyboard shortcuts don’t work in 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 ...
问题:
有没有办法告诉量角器使用唯一一个配置了重点规格的功能?
使用当前最新的量角器3.0.0.
希望问题很清楚.如果您需要任何其他信息,请告诉我们.
解决方法
我想知道你可以做些什么来包装它的语句,如:
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测试!