From becd08f2b590c1e35f6ff839c55545da23933ab2 Mon Sep 17 00:00:00 2001 From: Patrick Thompson Date: Mon, 5 Aug 2024 15:40:04 -0500 Subject: [PATCH 1/3] fix #152 - modify browserstack config file path to work --- src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index e25f93b..a51bd4c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,5 @@ import { parse as parseUrl } from 'url'; +import path from 'node:path'; import Promise from 'pinkie'; import { promisify } from 'util'; import parseCapabilities from 'desired-capabilities'; @@ -137,7 +138,7 @@ module.exports = { }, _getCapabilitiesFromConfig () { - const configPath = process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH; + const configPath = String(path.relative(__dirname, path.resolve(process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH))); if (!configPath) return {}; From b9f0ff43f0e859e83edb7a3f384c4707bb5ed960 Mon Sep 17 00:00:00 2001 From: Patrick Thompson Date: Mon, 5 Aug 2024 18:01:22 -0500 Subject: [PATCH 2/3] fix test errors --- src/index.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index a51bd4c..427c847 100644 --- a/src/index.js +++ b/src/index.js @@ -138,18 +138,27 @@ module.exports = { }, _getCapabilitiesFromConfig () { - const configPath = String(path.relative(__dirname, path.resolve(process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH))); + const configPath = path.resolve(process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH); if (!configPath) return {}; + const relativeConfigPath = path.relative(__dirname, configPath); - return require(configPath); + if (!relativeConfigPath) + return {}; + return require(relativeConfigPath); }, _getAdditionalCapabilities () { const capabilitiesFromEnvironment = pickBy(this._getCapabilitiesFromEnvironment(), value => value !== void 0); + let additionalCapabilities = ''; + + if (process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH) + additionalCapabilities = { ...this._getCapabilitiesFromConfig(), ...capabilitiesFromEnvironment }; + else + additionalCapabilities = { ...capabilitiesFromEnvironment }; - return { ...this._getCapabilitiesFromConfig(), ...capabilitiesFromEnvironment }; + return additionalCapabilities; }, _filterPlatformInfo (query) { From 0bf3ad289b54a4c5ea00b3d425d4be518ec67369 Mon Sep 17 00:00:00 2001 From: Patrick Thompson Date: Mon, 5 Aug 2024 19:37:03 -0500 Subject: [PATCH 3/3] added test and refactored --- src/index.js | 20 +++++------- test/mocha/browserstack-capabilities-test.js | 34 ++++++++++++++++++++ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/src/index.js b/src/index.js index 427c847..830b040 100644 --- a/src/index.js +++ b/src/index.js @@ -138,27 +138,23 @@ module.exports = { }, _getCapabilitiesFromConfig () { - const configPath = path.resolve(process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH); + let relativeConfigPath; - if (!configPath) - return {}; - const relativeConfigPath = path.relative(__dirname, configPath); + if (process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH) { + const configPath = path.resolve(process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH); - if (!relativeConfigPath) + relativeConfigPath = path.relative(__dirname, configPath); + } + else return {}; + return require(relativeConfigPath); }, _getAdditionalCapabilities () { const capabilitiesFromEnvironment = pickBy(this._getCapabilitiesFromEnvironment(), value => value !== void 0); - let additionalCapabilities = ''; - - if (process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH) - additionalCapabilities = { ...this._getCapabilitiesFromConfig(), ...capabilitiesFromEnvironment }; - else - additionalCapabilities = { ...capabilitiesFromEnvironment }; - return additionalCapabilities; + return { ...this._getCapabilitiesFromConfig(), ...capabilitiesFromEnvironment }; }, _filterPlatformInfo (query) { diff --git a/test/mocha/browserstack-capabilities-test.js b/test/mocha/browserstack-capabilities-test.js index e7b04c1..2bfc408 100644 --- a/test/mocha/browserstack-capabilities-test.js +++ b/test/mocha/browserstack-capabilities-test.js @@ -63,4 +63,38 @@ describe('Browserstack capabilities', function () { 'browserstack.networkProfile': '4g-lte-lossy' }); }); + + it('Should add additional capabilities when both config file and environment variables used', () => { + process.env['BROWSERSTACK_BUILD_ID'] = 'build-1'; + process.env['BROWSERSTACK_PROJECT_NAME'] = 'project-1'; + process.env['BROWSERSTACK_DISPLAY_RESOLUTION'] = '1024x768'; + process.env['BROWSERSTACK_TEST_RUN_NAME'] = 'Testcafe test run 1'; + process.env['BROWSERSTACK_DEBUG'] = 'false'; //env var should take precedence + process.env['BROWSERSTACK_CONSOLE'] = 'errors'; + process.env['BROWSERSTACK_NETWORK_LOGS'] = 'true'; + process.env['BROWSERSTACK_VIDEO'] = 'true'; + process.env['BROWSERSTACK_TIMEZONE'] = 'Asia/Taipei'; + process.env['BROWSERSTACK_GEO_LOCATION'] = 'ZA'; + process.env['BROWSERSTACK_CUSTOM_NETWORK'] = '"1000", "1000", "100", "1"'; + process.env['BROWSERSTACK_NETWORK_PROFILE'] = '4g-lte-lossy'; + + process.env.BROWSERSTACK_CAPABILITIES_CONFIG_PATH = require.resolve('./data/capabilities-config.json'); + + const capabilities = browserStackProvider._getAdditionalCapabilities(); + + expect(capabilities).to.deep.equal({ + 'build': 'build-1', + 'project': 'project-1', + 'resolution': '1024x768', + 'name': 'Testcafe test run 1', + 'browserstack.debug': 'false', //env var should take precedence + 'browserstack.console': 'errors', + 'browserstack.networkLogs': 'true', + 'browserstack.video': 'true', + 'browserstack.timezone': 'Asia/Taipei', + 'browserstack.geoLocation': 'ZA', + 'browserstack.customNetwork': '"1000", "1000", "100", "1"', + 'browserstack.networkProfile': '4g-lte-lossy' + }); + }); });