{"version":3,"sources":["jsdelivr-header.js","/npm/nightwatch@1.7.13/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,aAAe,QAAQ,UACvB,YAAc,QAAQ,qBACtB,YAAc,QAAQ,qBACtB,QAAU,QAAQ,qBAClB,MAAQ,QAAQ,WAChB,SAAW,QAAQ,0BACnB,UAAY,QAAQ,4BACpB,QAAU,QAAQ,aAClB,UAAY,QAAQ,UAEpB,eAAC,eAAc,QAAE,SAAW,SAC5B,OAAC,QAAU,MAEjB,MAAM,cACJ,wBAAI,GACF,OAAO,UAAU,cACnB,CAEA,QAAA,GACE,MAAO,gBACT,CAEA,WAAA,CAAY,EAAW,GACrB,KAAK,aAAe,CAAC,EACrB,KAAK,YAAc,KACnB,KAAK,oBAAsB,KAC3B,KAAK,UAAY,EACjB,KAAK,QAAU,EACf,KAAK,QAAU,EAAS,OAC1B,EAGF,MAAM,yBAAyB,aAE7B,WAAA,CAAY,EAAW,CAAC,EAAG,EAAO,CAAC,GACjC,QAEA,KAAK,gBAAgB,GAErB,KAAK,SAAW,EAChB,SAAS,YAAY,KAAK,UAC1B,OAAO,WAAW,KAAK,UAEvB,KAAK,oBAAqB,EAG1B,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,iBAAmB,KACxB,KAAK,WAAa,YAAY,OAC9B,KAAK,YAAc,UAAU,OAAO,MACpC,KAAK,UAAY,IAAI,QAAQ,MAC7B,KAAK,iBAAmB,IAAI,QAAQ,MACpC,KAAK,WAAa,KAElB,KAAK,MAAQ,IAAI,cAAc,KAAK,UAAW,GAE/C,KACG,eACA,uBACA,0BACA,oBACA,oBACA,gBACL,CAEA,OAAI,GACF,OAAO,KAAK,KACd,CAEA,QAAI,GACF,OAAO,KAAK,MACd,CAEA,SAAI,GACF,OAAO,KAAK,QAAQ,YACtB,CAEA,kBAAI,GACF,OAAO,KAAK,gBACd,CAEA,wBAAI,GACF,OAAO,KAAK,sBACd,CAEA,WAAI,GACF,OAAO,KAAK,SACd,CAEA,aAAI,GACF,OAAO,KAAK,QAAQ,cACtB,CAEA,aAAI,GACF,OAAO,KAAK,WACd,CAEA,oBAAI,GACF,MAAM,EAAU,KAAK,UAAU,QACzB,EAAM,KAAK,IAEjB,OAAO,IAAI,MAAM,EAAS,CACxB,IAAG,CAAC,EAAQ,IACH,YAAa,GAClB,IAAI,EACA,EACA,EAAY,EAAI,UAChB,EAAU,EAAK,EAAK,OAAO,GAC3B,EAAoB,MAAM,WAAW,GAErC,EACF,EAAW,EAAK,MACS,IAAhB,EAAK,QAAiB,IAC/B,EAAW,SAAS,GAAS,OAAO,CAAM,GAG5C,MAAM,EAAa,CACjB,QAQF,GALI,MAAM,QAAQ,EAAK,KAAO,MAAM,SAAS,KAC3C,EAAY,EACZ,EAAW,KAAO,EAAK,IAGrB,MAAM,SAAS,GAQjB,OAPI,KAAQ,EAAO,SACjB,EAAS,EAAO,QAAQ,GACxB,EAAW,UAAY,EAAI,WAAa,GAExC,EAAS,EAAO,GAGX,EAAO,GAAY,MAAM,GAAW,MAAM,YAAY,EAAU,EAAK,CAAC,MAG/E,GAAmB,iBAAR,EAAkB,CAE3B,MAAM,EAAO,QAAQ,QACrB,IAAI,EAAS,OAAO,KAAK,GAAQ,QAAO,CAAC,EAAM,KACjC,YAAR,IAIJ,EAAK,GAAO,EAAO,IAHV,IAMR,CAAC,GAEJ,OAAO,OAAO,EAAQ,EAAO,SAE7B,MAAM,EAAS,OAAO,KAAK,GAAQ,OAAO,QAAO,CAAC,EAAM,KACtD,EAAK,GAAO,EAAO,GAEZ,IACN,CAAC,GAEJ,OAAO,EAAK,QAAQ,EACtB,CAEA,OAAO,QAAQ,SACjB,GAGN,CAEA,kBAAI,GACF,OAAO,KAAK,gBACd,CAEA,YAAI,GACF,OAAO,KAAK,UACd,CAEA,uBAAI,GACF,OAAO,KAAK,SAAS,aACvB,CAEA,kBAAA,GACE,QAAO,MAAM,SAAS,KAAK,SAAS,eAAgB,KAAK,SAAS,cAAoD,IAArC,KAAK,QAAQ,YAAY,QAC5G,CAEA,YAAI,GACF,OAAO,KAAK,YAAc,CAAC,CAC7B,CAEA,UAAI,GACF,MAAM,SAAC,EAAQ,IAAE,EAAG,eAAE,EAAc,SAAE,EAAQ,UAAE,EAAS,eAAE,GAAkB,KAE7E,MAAO,CACL,QAAS,EACT,WACA,MACA,iBACA,WACA,YACA,iBAEJ,CAKA,cAAA,CAAe,EAAK,GAUlB,OATI,MAAM,WAAW,GACnB,OAAO,eAAe,KAAK,MAAO,EAAK,CACrC,IAAK,IAGP,KAAK,MAAM,GAAO,EAIb,IACT,CAEA,YAAA,CAAa,EAAK,GAGhB,OAFA,KAAK,MAAM,QAAQ,GAAO,EAEnB,IACT,CAQA,YAAA,CAAa,KAAQ,GACnB,IAAI,EACA,EAAU,KAAK,MAEnB,GAAoB,IAAhB,EAAK,OACP,EAAK,EAAK,QACL,GAAoB,IAAhB,EAAK,OAAc,CAC5B,IAAI,EAA8B,iBAAX,EAAK,GAAiB,EAAQ,EAAK,IAAM,EAAK,GACjE,IACF,EAAU,GAGZ,EAAK,EAAK,EACZ,CAEA,IAAK,EACH,MAAM,IAAI,MAAM,8BAKlB,OAFA,EAAQ,GAAO,EAER,IACT,CAQA,kBAAA,CAAmB,EAAK,GACtB,IAAI,EAAM,KAAK,MACf,QAAI,IACF,EAA0B,iBAAb,EAAwB,EAAI,GAAa,OAE1C,IAAR,UAKc,IAAb,EAAI,EACb,CAEA,WAAA,CAAY,GAGV,OAFA,KAAK,WAAa,EAEX,IACT,CAQA,gBAAA,CAAiB,GACf,GAAyB,IAArB,UAAU,OACZ,OAAO,KAAK,SAAS,oBAGvB,KAAK,SAAS,oBAAsB,CACtC,CAEA,YAAA,GACE,IAAI,EAAQ,KAAK,SAAS,WAAa,KAAK,SAAS,YAAc,KAGnE,OAFA,KAAK,eAAe,YAAa,GAAO,eAAe,aAAc,GAE9D,IACT,CAEA,oBAAA,GACE,MAAM,YAAC,GAAe,KAAK,SAO3B,OALI,KAAK,sBACP,KAAK,eAAe,kBAAmB,EAAY,MAChD,aAAa,kBAAmB,EAAY,MAG1C,IACT,CAEA,uBAAA,GAGE,OAFA,KAAK,uBAAyB,KAAK,SAAS,UAAY,eAAe,MAAQ,eAAe,aAEvF,IACT,CAEA,iBAAA,CAAkB,EAAW,MAC3B,OAAI,GAAY,eAAe,QAAQ,IACrC,KAAK,iBAAmB,EAEjB,OAIT,KAAK,iBAAmB,KAAK,qBAEtB,KACT,CAEA,iBAAA,GAGE,OAFA,KAAK,aAAa,sBAAuB,KAAK,QAAQ,qBAE/C,IACT,CAEA,cAAA,GACE,KAAK,SAAS,UAAY,KAAK,SAAS,WAAa,CAAC,EAEtD,KACG,uBAAuB,OAAQ,CAAC,eAAgB,iBAAkB,CAAC,aAAc,cACjF,uBAAuB,OAAQ,CAAC,eAAgB,iBAAkB,CAAC,aAAc,KAAK,UAAU,cAChG,uBAAuB,MAAO,CAAC,SAAU,WAAY,CAAC,cAAc,IACpE,uBAAuB,SACvB,uBAAuB,kBAAmB,2BAC1C,uBAAuB,sBAAuB,sBAAuB,CAAC,aAAc,KAAK,UAAU,oBACnG,uBAAuB,YACvB,uBAAuB,aAAc,CAAC,YAAa,aAAc,aAEpE,MAAM,EAAgB,KAAK,SAAS,UAC9B,EAAiB,EAAc,iBAAmB,CAAC,EA0CzD,OAxCI,EAAc,MAChB,KAAK,SAAS,QAAQ,EAAc,MAGlC,EAAc,MAChB,KAAK,SAAS,QAAQ,EAAc,MAGtC,KAAK,SAAS,OAAO,EAAc,KACnC,KAAK,SAAS,aAAa,EAAc,iBAEb,IAAxB,EAAc,OAChB,KAAK,SAAS,SAAS,EAAc,YAGF,IAA1B,EAAe,SACxB,KAAK,SAAS,WAAW,EAAe,cAGE,IAAjC,EAAe,gBACxB,KAAK,SAAS,iBAAiB,EAAe,gBAGA,iBAArC,EAAc,qBACvB,KAAK,SAAS,qBAAqB,EAAc,qBAG/C,EAAc,WAChB,KACG,aAAa,WAAY,EAAc,UACvC,aAAa,YAAa,EAAc,YAE3C,KAAK,SAAS,eAAe,CAC3B,SAAU,EAAc,SACxB,IAAK,EAAc,cAIvB,YAAY,eAAiB,KAAK,SAAS,SAEpC,IACT,CAEA,sBAAA,CAAuB,EAAY,EAAY,EAAO,CAAC,GACrD,IAAI,EAAgB,KAAK,SAAS,UAGlC,QADoD,IAA7B,EAAc,GAEnC,OAAO,UAGU,IAAf,EACF,EAAa,CAAC,GACJ,MAAM,QAAQ,KACxB,EAAa,CAAC,IAGhB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,OAAQ,IAAK,CAC1C,IAAI,EAAO,EAAW,GAEtB,QAD8C,IAAvB,KAAK,SAAS,GAInC,OAFA,EAAc,GAAc,KAAK,SAAS,GAEnC,IAEX,CAMA,YAJgC,IAArB,EAAK,mBAAmE,IAA7B,EAAc,KAClE,EAAc,GAAc,EAAK,cAG5B,IACT,CAMA,UAAA,GACE,KACG,eACA,oBACL,CAEA,cAAA,GAGE,OAFA,KAAK,eAAe,eAAe,IAAM,KAAK,SAAS,cAEhD,IACT,CAEA,YAAA,GAGE,OAFA,KAAK,eAAe,OAAQ,QAAQ,oBAE7B,IACT,CAEA,kBAAA,GACE,KAAK,eAAe,OAAQ,CAAC,GAC7B,KAAK,eAAe,SAAU,CAAC,GAE3B,KAAK,qBACP,KAAK,eAAe,SAAU,CAAC,GAGjC,UAAU,KAAK,MACf,MAAM,EAAY,OAAO,OAAO,CAAC,EAAG,KAAK,MAAM,QACzC,EAAY,OAAO,OAAO,CAAC,EAAG,KAAK,MAAM,QAK/C,OAHA,KAAK,MAAM,OAAS,UAAU,gBAAgB,GAC9C,KAAK,MAAM,OAAS,UAAU,gBAAgB,GAEvC,IACT,CAQA,aAAA,CAAc,GACZ,OAAK,KAAK,QAAQ,qBAIlB,KAAK,QAAQ,GAAG,oBAAoB,IAClC,KAAK,KAAK,sBAAuB,EAAO,IAGnC,KAAK,QAAQ,OAAO,GACxB,MAAK,IACJ,KAAK,eAAe,YAAa,EAAK,WACtC,KAAK,eAAe,eAAgB,EAAK,cAEzC,OAAO,KAAK,6BAA6B,EAAK,eAE9C,KAAK,KAAK,4BAA6B,GAEhC,MAhBF,QAAQ,SAkBnB,CAMA,YAAA,GACE,OAAO,KAAK,eACd,EAGF,MAAM,WAAa,OAAO,QAAU,CAAC,EAErC,WAAW,OAAS,SAAS,EAAU,EAAW,KAAM,EAAO,CAAC,GAC9D,MAAM,EAAS,IAAI,iBAAiB,EAAU,GAE9C,GAAiB,OAAb,EAAmB,CAErB,EAAW,IADgB,QAAQ,4BACxB,CAAuB,EACpC,CAIA,OAFA,EAAO,YAAY,GAAU,aAEtB,CACT,EAEA,WAAW,IAAM,SAAS,GACxB,MAAM,EAAY,QAAQ,+BACpB,KAAC,GAAQ,EAEf,GAAI,EAAK,KACP,EAAU,gBACL,GAAI,EAAK,KAEd,QAAQ,IAAI,uBAEZ,QAAQ,WAAW,IACjB,CACE,OAAQ,CAAC,KAAM,OACf,SAAU,CAAC,OAAQ,OAAQ,OAC3B,SAAU,CAAC,SAAU,OAAQ,UAAW,WAE1C,CACE,cAAc,EACd,YAAY,EACZ,UAAU,IAEZ,KAAK,QAAQ,UACV,GAAI,EAAK,QAAS,CACvB,IAAI,EAAgB,QAAQ,UAAY,oBAExC,QAAQ,IAAI,iBAEZ,QAAQ,IAAI,gBAAkB,EAAc,SAE5C,QAAQ,IAAI,2EAA6E,EAAc,QAAU,KACnH,KAAO,CACL,IAAK,MAAM,WAAW,GACpB,MAAM,IAAI,MAAM,sDAGlB,EAAS,EACX,CACF,EASA,WAAW,OAAS,SAAS,EAAO,CAAC,EAAG,EAAO,WAAY,EAAG,EAAW,CAAC,GACpE,EAAK,SACP,EAAK,QAAU,EAAK,QAEtB,EAAK,SAAW,SAAS,SAAS,iBAElC,MAAM,EAAS,WAAW,UAAU,GAEpC,OAAO,EAAO,MAAM,GACjB,WACA,OAAM,IACL,EAAO,gBAAgB,YAAY,IAE5B,KAER,MAAK,GACG,EAAK,IAElB,EAOA,WAAW,SAAW,SAAS,EAAY,GACzC,IAAI,EAEA,UAAU,QAAU,GACtB,EAAW,UAAU,IAAM,CAAC,EAC5B,EAAO,CAAC,GACC,MAAM,QAAQ,GACvB,EAAO,CACL,QAAS,GAEF,MAAM,SAAS,GACxB,EAAO,EACE,MAAM,SAAS,KACxB,EAAO,CACL,QAAS,CAAC,KAIV,EAAK,SACP,EAAK,QAAU,EAAK,QAEtB,EAAK,SAAW,SAAS,SAAS,iBAElC,IAGE,OAFe,WAAW,UAAU,GAEtB,MAAM,GAAU,UAChC,CAAE,MAAO,GACP,OAAO,QAAQ,OAAO,EACxB,CACF,EAEA,WAAW,UAAY,SAAS,EAAO,CAAC,GAGtC,OAAO,IAFW,QAAQ,uBAEnB,CAAc,EACvB,EAMA,WAAW,WAAa,SAAS,EAAO,CAAC,GACvC,MAAM,EAAY,WAAW,YAG7B,OAFA,EAAU,iBAAiB,GAEpB,WAAW,OAAO,EAAU,SACrC,EAEA,WAAW,OAAS","file":"/npm/nightwatch@1.7.13/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/nightwatch@1.7.13/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const EventEmitter = require('events');\nconst HttpOptions = require('./http/options.js');\nconst HttpRequest = require('./http/request.js');\nconst Session = require('./core/session.js');\nconst Utils = require('./utils');\nconst Settings = require('./settings/settings.js');\nconst Transport = require('./transport/transport.js');\nconst Element = require('./element');\nconst ApiLoader = require('./api');\n\nconst {LocateStrategy, Locator} = Element;\nconst {Logger} = Utils;\n\nclass NightwatchAPI {\n  get WEBDRIVER_ELEMENT_ID() {\n    return Transport.WEB_ELEMENT_ID;\n  }\n\n  toString() {\n    return 'Nightwatch API';\n  }\n\n  constructor(sessionId, settings) {\n    this.capabilities = {};\n    this.currentTest = null;\n    this.desiredCapabilities = null;\n    this.sessionId = sessionId;\n    this.options = settings;\n    this.globals = settings.globals;\n  }\n}\n\nclass NightwatchClient extends EventEmitter {\n\n  constructor(settings = {}, argv = {}) {\n    super();\n\n    this.setMaxListeners(0);\n\n    this.settings = settings;\n    Settings.setDefaults(this.settings);\n    Logger.setOptions(this.settings);\n\n    this.isES6AsyncTestcase = false;\n\n    // backwards compatibility\n    this.options = settings;\n    this.__argv = argv;\n    this.__locateStrategy = null;\n    this.__httpOpts = HttpOptions.global;\n    this.__transport = Transport.create(this);\n    this.__session = new Session(this);\n    this.__elementLocator = new Locator(this);\n    this.__reporter = null;\n\n    this.__api = new NightwatchAPI(this.sessionId, settings);\n\n    this\n      .setLaunchUrl()\n      .setScreenshotOptions()\n      .setConfigLocateStrategy()\n      .setLocateStrategy()\n      .setSessionOptions()\n      .setHttpOptions();\n  }\n\n  get api() {\n    return this.__api;\n  }\n\n  get argv() {\n    return this.__argv;\n  }\n\n  get queue() {\n    return this.session.commandQueue;\n  }\n\n  get locateStrategy() {\n    return this.__locateStrategy;\n  }\n\n  get configLocateStrategy() {\n    return this.__configLocateStrategy;\n  }\n\n  get session() {\n    return this.__session;\n  }\n\n  get sessionId() {\n    return this.session.getSessionId();\n  }\n\n  get transport() {\n    return this.__transport;\n  }\n\n  get transportActions() {\n    const actions = this.transport.Actions;\n    const api = this.api;\n\n    return new Proxy(actions, {\n      get(target, name) {\n        return function (...args) {\n          let callback;\n          let method;\n          let sessionId = api.sessionId;\n          let lastArg = args[args.length-1];\n          let isLastArgFunction = Utils.isFunction(lastArg);\n\n          if (isLastArgFunction) {\n            callback = args.pop();\n          } else if (args.length === 0 || !isLastArgFunction) {\n            callback = function(result) {return result};\n          }\n\n          const definition = {\n            args\n          };\n\n          if (Array.isArray(args[0]) && Utils.isString(lastArg)) {\n            sessionId = lastArg;\n            definition.args = args[0];\n          }\n\n          if (Utils.isString(name)) {\n            if (name in target.session) { // actions that require the current session\n              method = target.session[name];\n              definition.sessionId = api.sessionId || sessionId;\n            } else {\n              method = target[name];\n            }\n\n            return method(definition).then((result) => Utils.makePromise(callback, api, [result]));\n          }\n\n          if (typeof name == 'symbol') {\n            // this is in case of console.log(this.transportActions)\n            const util = require('util');\n            let result = Object.keys(target).reduce((prev, key) => {\n              if (key === 'session') {\n                return prev;\n              }\n\n              prev[key] = target[key];\n\n              return prev;\n            }, {});\n\n            Object.assign(result, target.session);\n\n            const sorted = Object.keys(result).sort().reduce((prev, key) => {\n              prev[key] = result[key];\n\n              return prev;\n            }, {});\n\n            return util.inspect(sorted);\n          }\n\n          return Promise.resolve();\n        };\n      }\n    });\n  }\n\n  get elementLocator() {\n    return this.__elementLocator;\n  }\n\n  get httpOpts() {\n    return this.__httpOpts;\n  }\n\n  get startSessionEnabled() {\n    return this.settings.start_session;\n  }\n\n  screenshotsEnabled() {\n    return Utils.isObject(this.settings.screenshots) ? (this.settings.screenshots && this.options.screenshots.enabled === true) : false;\n  }\n\n  get reporter() {\n    return this.__reporter || {};\n  }\n\n  get client() {\n    const {settings, api, locateStrategy, reporter, sessionId, elementLocator} = this;\n\n    return {\n      options: settings,\n      settings,\n      api,\n      locateStrategy,\n      reporter,\n      sessionId,\n      elementLocator\n    };\n  }\n\n  //////////////////////////////////////////////////////////////////////////////////////////\n  // Setters\n  //////////////////////////////////////////////////////////////////////////////////////////\n  setApiProperty(key, value) {\n    if (Utils.isFunction(value)) {\n      Object.defineProperty(this.__api, key, {\n        get: value\n      });\n    } else {\n      this.__api[key] = value;\n    }\n\n\n    return this;\n  }\n\n  setApiOption(key, value) {\n    this.__api.options[key] = value;\n\n    return this;\n  }\n\n  /**\n   *\n   * @param key\n   * @param args\n   * @return {NightwatchClient}\n   */\n  setApiMethod(key, ...args) {\n    let fn;\n    let context = this.__api;\n\n    if (args.length === 1) {\n      fn = args[0];\n    } else if (args.length === 2) {\n      let namespace = typeof args[0] == 'string' ? context[args[0]] : args[0];\n      if (namespace) {\n        context = namespace;\n      }\n\n      fn = args[1];\n    }\n\n    if (!fn) {\n      throw new Error('Method must be a declared.');\n    }\n\n    context[key] = fn;\n\n    return this;\n  }\n\n  /**\n   *\n   * @param {string} key\n   * @param {string|object} namespace\n   * @return {boolean}\n   */\n  isApiMethodDefined(key, namespace) {\n    let api = this.__api;\n    if (namespace) {\n      api = typeof namespace == 'string' ? api[namespace] : namespace;\n\n      if (api === undefined) {\n        return false;\n      }\n    }\n\n    return api[key] !== undefined;\n  }\n\n  setReporter(reporter) {\n    this.__reporter = reporter;\n\n    return this;\n  }\n\n  //////////////////////////////////////////////////////////////////////////////////////////\n  // Options\n  //////////////////////////////////////////////////////////////////////////////////////////\n  /**\n   * @deprecated\n   */\n  endSessionOnFail(val) {\n    if (arguments.length === 0) {\n      return this.settings.end_session_on_fail;\n    }\n\n    this.settings.end_session_on_fail = val;\n  }\n\n  setLaunchUrl() {\n    let value = this.settings.launchUrl || this.settings.launch_url || null;\n    this.setApiProperty('launchUrl', value).setApiProperty('launch_url', value);\n\n    return this;\n  }\n\n  setScreenshotOptions() {\n    const {screenshots} = this.settings;\n\n    if (this.screenshotsEnabled()) {\n      this.setApiProperty('screenshotsPath', screenshots.path)\n        .setApiOption('screenshotsPath', screenshots.path);\n    }\n\n    return this;\n  }\n\n  setConfigLocateStrategy() {\n    this.__configLocateStrategy = this.settings.use_xpath ? LocateStrategy.XPATH : LocateStrategy.CSS_SELECTOR;\n\n    return this;\n  }\n\n  setLocateStrategy(strategy = null) {\n    if (strategy && LocateStrategy.isValid(strategy)) {\n      this.__locateStrategy = strategy;\n\n      return this;\n    }\n\n\n    this.__locateStrategy = this.configLocateStrategy;\n\n    return this;\n  }\n\n  setSessionOptions() {\n    this.setApiOption('desiredCapabilities', this.session.desiredCapabilities);\n\n    return this;\n  }\n\n  setHttpOptions() {\n    this.settings.webdriver = this.settings.webdriver || {};\n\n    this\n      .setWebdriverHttpOption('host', ['seleniumHost', 'selenium_host'], {defaultValue: 'localhost'})\n      .setWebdriverHttpOption('port', ['seleniumPort', 'selenium_port'], {defaultValue: this.transport.defaultPort})\n      .setWebdriverHttpOption('ssl', ['useSsl', 'use_ssl'], {defaultValue: false})\n      .setWebdriverHttpOption('proxy')\n      .setWebdriverHttpOption('timeout_options', 'request_timeout_options')\n      .setWebdriverHttpOption('default_path_prefix', 'default_path_prefix', {defaultValue: this.transport.defaultPathPrefix})\n      .setWebdriverHttpOption('username')\n      .setWebdriverHttpOption('access_key', ['accessKey', 'access_key', 'password']);\n\n    const webdriverOpts = this.settings.webdriver;\n    const timeoutOptions = webdriverOpts.timeout_options || {};\n\n    if (webdriverOpts.port) {\n      this.httpOpts.setPort(webdriverOpts.port);\n    }\n\n    if (webdriverOpts.host) {\n      this.httpOpts.setHost(webdriverOpts.host);\n    }\n\n    this.httpOpts.useSSL(webdriverOpts.ssl);\n    this.httpOpts.setKeepAlive(webdriverOpts.keep_alive);\n\n    if (webdriverOpts.proxy !== undefined) {\n      this.httpOpts.setProxy(webdriverOpts.proxy);\n    }\n\n    if (typeof timeoutOptions.timeout != 'undefined') {\n      this.httpOpts.setTimeout(timeoutOptions.timeout);\n    }\n\n    if (typeof timeoutOptions.retry_attempts != 'undefined') {\n      this.httpOpts.setRetryAttempts(timeoutOptions.retry_attempts);\n    }\n\n    if (typeof webdriverOpts.default_path_prefix == 'string') {\n      this.httpOpts.setDefaultPathPrefix(webdriverOpts.default_path_prefix);\n    }\n\n    if (webdriverOpts.username) {\n      this\n        .setApiOption('username', webdriverOpts.username)\n        .setApiOption('accessKey', webdriverOpts.access_key);\n\n      this.httpOpts.setCredentials({\n        username: webdriverOpts.username,\n        key: webdriverOpts.access_key\n      });\n    }\n\n    HttpRequest.globalSettings = this.httpOpts.settings;\n\n    return this;\n  }\n\n  setWebdriverHttpOption(newSetting, oldSetting, opts = {}) {\n    let webdriverOpts = this.settings.webdriver;\n\n    let isDefined = typeof webdriverOpts[newSetting] != 'undefined';\n    if (isDefined) {\n      return this;\n    }\n\n    if (oldSetting === undefined) {\n      oldSetting = [newSetting];\n    } else if (!Array.isArray(oldSetting)) {\n      oldSetting = [oldSetting];\n    }\n\n    for (let i = 0; i < oldSetting.length; i++) {\n      let item = oldSetting[i];\n      let isDefined = typeof this.settings[item] != 'undefined';\n      if (isDefined) {\n        webdriverOpts[newSetting] = this.settings[item];\n\n        return this;\n      }\n    }\n\n    if (typeof opts.defaultValue != 'undefined' && typeof webdriverOpts[newSetting] == 'undefined') {\n      webdriverOpts[newSetting] = opts.defaultValue;\n    }\n\n    return this;\n  }\n\n  //////////////////////////////////////////////////////////////////////////////////////////\n  // Initialize the APIs\n  //////////////////////////////////////////////////////////////////////////////////////////\n\n  initialize() {\n    this\n      .loadKeyCodes()\n      .loadNightwatchApis();\n  }\n\n  setCurrentTest() {\n    this.setApiProperty('currentTest', () => this.reporter.currentTest);\n\n    return this;\n  }\n\n  loadKeyCodes() {\n    this.setApiProperty('Keys', require('./api/keys.json'));\n\n    return this;\n  }\n\n  loadNightwatchApis() {\n    this.setApiProperty('page', {});\n    this.setApiProperty('assert', {});\n\n    if (this.startSessionEnabled) {\n      this.setApiProperty('verify', {});\n    }\n\n    ApiLoader.init(this);\n    const assertApi = Object.assign({}, this.__api.assert);\n    const verifyApi = Object.assign({}, this.__api.verify);\n\n    this.__api.assert = ApiLoader.makeAssertProxy(assertApi);\n    this.__api.verify = ApiLoader.makeAssertProxy(verifyApi);\n\n    return this;\n  }\n\n  //////////////////////////////////////////////////////////////////////////////////////////\n  // Session\n  //////////////////////////////////////////////////////////////////////////////////////////\n  /**\n   * @return {Promise}\n   */\n  createSession(argv) {\n    if (!this.session.startSessionEnabled) {\n      return Promise.resolve();\n    }\n\n    this.session.on('session:finished', reason => {\n      this.emit('nightwatch:finished', reason);\n    });\n\n    return this.session.create(argv)\n      .then(data => {\n        this.setApiProperty('sessionId', data.sessionId);\n        this.setApiProperty('capabilities', data.capabilities);\n\n        Logger.info(`Received session with ID: ${data.sessionId}\\n`);\n\n        this.emit('nightwatch:session.create', data);\n\n        return data;\n      });\n  }\n\n  /**\n   * @deprecated\n   * @return {Promise}\n   */\n  startSession() {\n    return this.createSession();\n  }\n}\n\nconst Nightwatch = module.exports = {};\n\nNightwatch.client = function(settings, reporter = null, argv = {}) {\n  const client = new NightwatchClient(settings, argv);\n\n  if (reporter === null) {\n    const SimplifiedReporter = require('./reporter/simplified.js');\n    reporter = new SimplifiedReporter(settings);\n  }\n\n  client.setReporter(reporter).initialize();\n\n  return client;\n};\n\nNightwatch.cli = function(callback) {\n  const ArgvSetup = require('./runner/cli/argv-setup.js');\n  const {argv} = ArgvSetup;\n\n  if (argv.help) {\n    ArgvSetup.showHelp();\n  } else if (argv.info) {\n    // eslint-disable-next-line no-console\n    console.log('  Environment Info:');\n\n    require('envinfo').run(\n      {\n        System: ['OS', 'CPU'],\n        Binaries: ['Node', 'Yarn', 'npm'],\n        Browsers: ['Chrome', 'Edge', 'Firefox', 'Safari']\n      },\n      {\n        showNotFound: true,\n        duplicates: true,\n        fullTree: true\n      }// eslint-disable-next-line no-console\n    ).then(console.log);\n  } else if (argv.version) {\n    let packageConfig = require(__dirname + '/../package.json');\n    // eslint-disable-next-line no-console\n    console.log('  Nightwatch:');\n    // eslint-disable-next-line no-console\n    console.log('    version: ' + packageConfig.version);\n    // eslint-disable-next-line no-console\n    console.log('    changelog: https://github.com/nightwatchjs/nightwatch/releases/tag/v' + packageConfig.version + '\\n');\n  } else {\n    if (!Utils.isFunction(callback)) {\n      throw new Error('Supplied callback argument needs to be a function.');\n    }\n\n    callback(argv);\n  }\n};\n\n/**\n * @deprecated\n * @param argv\n * @param done\n * @param settings\n * @return {*|CliRunner}\n */\nNightwatch.runner = function(argv = {}, done = function() {}, settings = {}) {\n  if (argv.source) {\n    argv._source = argv.source;\n  }\n  argv.reporter = Settings.DEFAULTS.default_reporter;\n\n  const runner = Nightwatch.CliRunner(argv);\n\n  return runner.setup(settings)\n    .runTests()\n    .catch(err => {\n      runner.processListener.setExitCode(10);\n\n      return err;\n    })\n    .then(err => {\n      return done(err);\n    });\n};\n\n/**\n *\n * @param [testSource]\n * @param [settings]\n */\nNightwatch.runTests = function(testSource, settings) {\n  let argv;\n\n  if (arguments.length <= 1) {\n    settings = arguments[0] || {};\n    argv = {};\n  } else if (Array.isArray(testSource)) {\n    argv = {\n      _source: testSource\n    };\n  } else if (Utils.isObject(testSource)) {\n    argv = testSource;\n  } else if (Utils.isString(testSource)) {\n    argv = {\n      _source: [testSource]\n    };\n  }\n\n  if (argv.source) {\n    argv._source = argv.source;\n  }\n  argv.reporter = Settings.DEFAULTS.default_reporter;\n\n  try {\n    const runner = Nightwatch.CliRunner(argv);\n\n    return runner.setup(settings).runTests();\n  } catch (err) {\n    return Promise.reject(err);\n  }\n};\n\nNightwatch.CliRunner = function(argv = {}) {\n  const CliRunner = require('./runner/cli/cli.js');\n\n  return new CliRunner(argv);\n};\n\n/**\n * @param opts\n * @return {*}\n */\nNightwatch.initClient = function(opts = {}) {\n  const cliRunner = Nightwatch.CliRunner();\n  cliRunner.initTestSettings(opts);\n\n  return Nightwatch.client(cliRunner.settings);\n};\n\nNightwatch.Logger = Logger;\n"]}