From 97315f30859482aa0d434f6ba258330f7171ecda Mon Sep 17 00:00:00 2001 From: Wim Selles Date: Thu, 29 Oct 2020 17:53:00 +0100 Subject: [PATCH] fix: fixes issues with older browsers / caps --- src/process-config.ts | 28 +++++++++++++++++----------- src/utils.ts | 5 +++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/process-config.ts b/src/process-config.ts index 130107a..d1e4ce3 100644 --- a/src/process-config.ts +++ b/src/process-config.ts @@ -1,13 +1,14 @@ import {bootstrap} from 'global-agent' +import {isW3C} from "./utils"; -export function processConfig (config: any = {}, args: any = {}) { +export function processConfig(config: any = {}, args: any = {}) { const username = config.username || process.env.SAUCE_USERNAME; const accessKey = config.accessKey || process.env.SAUCE_ACCESS_KEY; const startConnect = config.startConnect !== false; let tunnelIdentifier = args.tunnelIdentifier || config.tunnelIdentifier; - // TODO: This option is very ambiguous because it technically only affects the reporter. Consider + // TODO: This option is very ambiguous because it technically only affects the reporter. Consider // renaming in the future. const sauceApiProxy = args.proxy || config.proxy; if (sauceApiProxy) { @@ -20,9 +21,7 @@ export function processConfig (config: any = {}, args: any = {}) { } // Browser name that will be printed out by Karma. - const browserName = args.browserName + - (args.version ? ' ' + args.version : '') + - (args.platform ? ' (' + args.platform + ')' : ''); + const browserName = `${args.browserName} ${args.browserVersion || args.version || ''} ${args.platformName || args.platform || ''}`; // In case "startConnect" is enabled, and no tunnel identifier has been specified, we just // generate one randomly. This makes it possible for developers to use "startConnect" with @@ -53,12 +52,20 @@ export function processConfig (config: any = {}, args: any = {}) { }; // transform JWP capabilities into W3C capabilities for backward compatibility - args.browserVersion = args.browserVersion || args.version || 'latest' - args.platformName = args.platformName || args.platform || 'Windows 10' - // delete JWP capabilities + if (isW3C(args)) { + args.browserVersion = args.browserVersion || args.version || 'latest' + args.platformName = args.platformName || args.platform || 'Windows 10' + args['sauce:options'] = args['sauce:options'] ? {...args['sauce:options'], ...capabilitiesFromConfig} : capabilitiesFromConfig + + // delete JWP capabilities + delete args.version + delete args.platform + } else { + args = {...args, ...capabilitiesFromConfig} + } + // Not needed delete args.base - delete args.version - delete args.platform + const seleniumCapabilities = { user: username, key: accessKey, @@ -66,7 +73,6 @@ export function processConfig (config: any = {}, args: any = {}) { headless: config.headless, logLevel: 'error', capabilities: { - 'sauce:options': capabilitiesFromConfig, ...args }, ...config.options diff --git a/src/utils.ts b/src/utils.ts index 475c3eb..05903e5 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -11,3 +11,8 @@ export async function waitUntil({condition, retries = 0, maxRetries = 50, interv return waitUntil({condition, retries: retries++, maxRetries, interval}) } + +export function isW3C(capabilities){ + // Only browserVersion is mandatory, platformName is optional + return Boolean(capabilities.browserVersion) +}