async getNewDriver()

in lib/driverProviders/direct.ts [53:114]


  async getNewDriver(): Promise<WebDriver> {
    let driver: WebDriver;

    switch (this.config_.capabilities.browserName) {
      case 'chrome':
        let chromeDriverFile: string;
        if (this.config_.chromeDriver) {
          chromeDriverFile = this.config_.chromeDriver;
        } else {
          try {
            chromeDriverFile = new ChromeDriver().getBinaryPath();
          } catch (e) {
            throw new BrowserError(
                logger, 'Run \'webdriver-manager update\' to download binaries.');
          }
        }

        if (!fs.existsSync(chromeDriverFile)) {
          throw new BrowserError(
              logger,
              'Could not find chromedriver at ' + chromeDriverFile +
                  '. Run \'webdriver-manager update\' to download binaries.');
        }

        const chromeService =
            (new ServiceBuilderForChrome(chromeDriverFile) as ServiceBuilderForChrome).build();
        driver = await DriverForChrome.createSession(
            new Capabilities(this.config_.capabilities), chromeService);
        break;
      case 'firefox':
        let geckoDriverFile: string;
        if (this.config_.geckoDriver) {
          geckoDriverFile = this.config_.geckoDriver;
        } else {
          try {
            geckoDriverFile = new GeckoDriver().getBinaryPath();
          } catch (e) {
            throw new BrowserError(
                logger, 'Run \'webdriver-manager update\' to download binaries.');
          }
        }

        if (!fs.existsSync(geckoDriverFile)) {
          throw new BrowserError(
              logger,
              'Could not find geckodriver at ' + geckoDriverFile +
                  '. Run \'webdriver-manager update\' to download binaries.');
        }

        let firefoxService = new SerivceBuilderForFirefox(geckoDriverFile).build();
        driver = await DriverForFirefox.createSession(
            new Capabilities(this.config_.capabilities), firefoxService);
        break;
      default:
        throw new BrowserError(
            logger,
            'browserName ' + this.config_.capabilities.browserName +
                ' is not supported with directConnect.');
    }
    this.drivers_.push(driver);
    return driver;
  }