diff --git a/packages/wdio-config/src/lib/ConfigParser.js b/packages/wdio-config/src/lib/ConfigParser.js index 38421dbbef1..a7418244ff1 100644 --- a/packages/wdio-config/src/lib/ConfigParser.js +++ b/packages/wdio-config/src/lib/ConfigParser.js @@ -55,8 +55,10 @@ export default class ConfigParser { /** * For Sauce Labs RDC we need to determine if the config file has a `testobject_api_key` * If so, we need to provide a boolean to the `detectBackend` to set the correct hostname + * + * NOTE: This will not work for multi remote */ - const isRDC = this._capabilities.some(capability => 'testobject_api_key' in capability) + const isRDC = Array.isArray(this._capabilities) && this._capabilities.some(capability => 'testobject_api_key' in capability) /** * detect Selenium backend diff --git a/packages/wdio-config/tests/__fixtures__/wdio.conf.multiremote.rdc.js b/packages/wdio-config/tests/__fixtures__/wdio.conf.multiremote.rdc.js new file mode 100644 index 00000000000..44b232caf83 --- /dev/null +++ b/packages/wdio-config/tests/__fixtures__/wdio.conf.multiremote.rdc.js @@ -0,0 +1,30 @@ +import path from 'path' + +const TEST_ROOT = path.join(__dirname, '..') + +exports.config = { + user: 'foobar', + key: '50fa142c-3121-4gb0-9p07-8q326vvbq7b0', + specs: [path.join(TEST_ROOT, '*.test.js')], + exclude: [ + path.join(TEST_ROOT, '/detectBackend.test.js'), + path.join(TEST_ROOT, '/validateConfig.test.js') + ], + region: 'eu', + capabilities: [{ + myChromeBrowser: { + capabilities: { + browserName: 'chrome', + testobject_api_key: '1', + } + } + }], + suites: { + unit: [path.join(TEST_ROOT, 'configparser.test.js')], + mobile: [path.join(TEST_ROOT, 'detectBackend.test.js')], + functional: [ + path.join(TEST_ROOT, 'validateConfig.test.js'), + path.join(TEST_ROOT, '..', 'src/index.js') + ] + } +} diff --git a/packages/wdio-config/tests/__fixtures__/wdio.conf.rdc.js b/packages/wdio-config/tests/__fixtures__/wdio.conf.rdc.js new file mode 100644 index 00000000000..cebff83146d --- /dev/null +++ b/packages/wdio-config/tests/__fixtures__/wdio.conf.rdc.js @@ -0,0 +1,25 @@ +import path from 'path' + +const TEST_ROOT = path.join(__dirname, '..') + +exports.config = { + user: 'foobar', + key: '50fa142c-3121-4gb0-9p07-8q326vvbq7b0', + specs: [path.join(TEST_ROOT, '*.test.js')], + exclude: [ + path.join(TEST_ROOT, '/detectBackend.test.js'), + path.join(TEST_ROOT, '/validateConfig.test.js') + ], + capabilities: [{ + browserName: 'chrome', + testobject_api_key: '1', + }], + suites: { + unit: [path.join(TEST_ROOT, 'configparser.test.js')], + mobile: [path.join(TEST_ROOT, 'detectBackend.test.js')], + functional: [ + path.join(TEST_ROOT, 'validateConfig.test.js'), + path.join(TEST_ROOT, '..', 'src/index.js') + ] + } +} diff --git a/packages/wdio-config/tests/configparser.test.js b/packages/wdio-config/tests/configparser.test.js index 6034a0c4c3b..469bc31c578 100644 --- a/packages/wdio-config/tests/configparser.test.js +++ b/packages/wdio-config/tests/configparser.test.js @@ -3,6 +3,8 @@ import ConfigParser from '../src/lib/ConfigParser' const FIXTURES_PATH = path.resolve(__dirname, '__fixtures__') const FIXTURES_CONF = path.resolve(FIXTURES_PATH, 'wdio.conf.js') +const FIXTURES_CONF_RDC = path.resolve(FIXTURES_PATH, 'wdio.conf.rdc.js') +const FIXTURES_CONF_MULTIREMOTE_RDC = path.resolve(FIXTURES_PATH, 'wdio.conf.multiremote.rdc.js') const FIXTURES_LOCAL_CONF = path.resolve(FIXTURES_PATH, 'wdio.local.conf.js') const INDEX_PATH = path.resolve(__dirname, '..', 'src', 'index.js') @@ -21,6 +23,18 @@ describe('ConfigParser', () => { const configParser = new ConfigParser() expect(() => configParser.addConfigFile(path.resolve(__dirname, 'foobar.conf.js'))).toThrow() }) + + it('should add the rdc hostname when a rdc conf is provided', () => { + const configParser = new ConfigParser() + configParser.addConfigFile(FIXTURES_CONF_RDC) + expect(configParser._config.hostname).toContain('appium.testobject.com') + }) + + it('should default to the vm hostname when a multiremote conf with rdc props is provided', () => { + const configParser = new ConfigParser() + configParser.addConfigFile(FIXTURES_CONF_MULTIREMOTE_RDC) + expect(configParser._config.hostname).not.toContain('appium.testobject.com') + }) }) describe('merge', () => {