故事:
我们有一个相当巨大的端到端量角器测试代码库.我们有两个配置 – 一个是“本地” – 使用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测试!