From c49c6c6050e3e0d22d839b9ef09d8777ddc8b627 Mon Sep 17 00:00:00 2001 From: Craig Nishina Date: Wed, 21 Dec 2016 21:28:35 -0800 Subject: [PATCH] chore(driverProviders): add warnings to extra driver provider parameters - builds the driver provider in lib/driverProviders/index instead of lib/runner closes #1945 --- lib/driverProviders/index.ts | 85 ++++++++++++++++++++++++++++++++++++ lib/runner.ts | 22 +--------- 2 files changed, 87 insertions(+), 20 deletions(-) diff --git a/lib/driverProviders/index.ts b/lib/driverProviders/index.ts index db05d4b29..40e066a8e 100644 --- a/lib/driverProviders/index.ts +++ b/lib/driverProviders/index.ts @@ -6,3 +6,88 @@ export * from './hosted'; export * from './local'; export * from './mock'; export * from './sauce'; + + +import {AttachSession} from './attachSession'; +import {BrowserStack} from './browserStack'; +import {DriverProvider} from './driverProvider'; +import {Direct} from './direct'; +import {Hosted} from './hosted'; +import {Local} from './local'; +import {Mock} from './mock'; +import {Sauce} from './sauce'; + +import {Config} from '../config'; +import {Logger} from '../logger'; + +let logger = new Logger('driverProviders'); + +export let buildDriverProvider = (config: Config): DriverProvider => { + let driverProvider: DriverProvider; + + if (config.directConnect) { + driverProvider = new Direct(config); + logWarnings('directConnect', config); + } else if (config.seleniumAddress) { + if (config.seleniumSessionId) { + driverProvider = new AttachSession(config); + logWarnings('attachSession', config); + } else { + driverProvider = new Hosted(config); + logWarnings('hosted', config); + } + } else if (config.browserstackUser && config.browserstackKey) { + driverProvider = new BrowserStack(config); + logWarnings('browserStack', config); + } else if (config.sauceUser && config.sauceKey) { + driverProvider = new Sauce(config); + logWarnings('sauce', config); + } else if (config.seleniumServerJar) { + driverProvider = new Local(config); + logWarnings('local', config); + } else if (config.mockSelenium) { + driverProvider = new Mock(config); + logWarnings('mock', config); + } else { + driverProvider = new Local(config); + logWarnings('local', config); + } + return driverProvider; +}; + +export let logWarnings = (providerType: string, config: Config): void => { + + let warnInto = 'Using driver provider ' + providerType + + ', but also found extra driver provider parameter(s): '; + let warnList: string[] = []; + if ('directConnect' !== providerType && config.directConnect) { + warnList.push('directConnect'); + } + if ('attachSession' !== providerType && 'hosted' !== providerType && config.seleniumAddress) { + warnList.push('seleniumAddress'); + } + if ('attachSession' !== providerType && config.seleniumSessionId) { + warnList.push('seleniumSessionId'); + } + if ('browserStack' !== providerType && config.browserstackUser) { + warnList.push('browserstackUser'); + } + if ('browserStack' !== providerType && config.browserstackKey) { + warnList.push('browserstackKey'); + } + if ('sauce' !== providerType && config.sauceUser) { + warnList.push('sauceUser'); + } + if ('sauce' !== providerType && config.sauceKey) { + warnList.push('sauceKey'); + } + if ('local' !== providerType && config.seleniumServerJar) { + warnList.push('seleniumServerJar'); + } + if ('mock' !== providerType && config.mockSelenium) { + warnList.push('mockSelenium'); + } + if (warnList.length !== 0) { + logger.warn(warnInto + warnList.join(', ')); + } +}; diff --git a/lib/runner.ts b/lib/runner.ts index 38da964da..8a1767806 100644 --- a/lib/runner.ts +++ b/lib/runner.ts @@ -5,7 +5,7 @@ import * as util from 'util'; import {ProtractorBrowser} from './browser'; import {Config} from './config'; -import {AttachSession, BrowserStack, Direct, DriverProvider, Hosted, Local, Mock, Sauce} from './driverProviders'; +import {buildDriverProvider, DriverProvider} from './driverProviders'; import {Logger} from './logger'; import {Plugins} from './plugins'; import {protractor} from './ptor'; @@ -99,25 +99,7 @@ export class Runner extends EventEmitter { */ loadDriverProvider_(config: Config) { this.config_ = config; - if (this.config_.directConnect) { - this.driverprovider_ = new Direct(this.config_); - } else if (this.config_.seleniumAddress) { - if (this.config_.seleniumSessionId) { - this.driverprovider_ = new AttachSession(this.config_); - } else { - this.driverprovider_ = new Hosted(this.config_); - } - } else if (this.config_.browserstackUser && this.config_.browserstackKey) { - this.driverprovider_ = new BrowserStack(this.config_); - } else if (this.config_.sauceUser && this.config_.sauceKey) { - this.driverprovider_ = new Sauce(this.config_); - } else if (this.config_.seleniumServerJar) { - this.driverprovider_ = new Local(this.config_); - } else if (this.config_.mockSelenium) { - this.driverprovider_ = new Mock(this.config_); - } else { - this.driverprovider_ = new Local(this.config_); - } + this.driverprovider_ = buildDriverProvider(this.config_); } /**