* * @param {BrowserNameDef} browserName * @param {!string[]} args * @param {string=} deviceName * @return {!WebDriver}
(browserName, args, deviceName)
| 114 | * @return {!WebDriver} |
| 115 | */ |
| 116 | function createDriver(browserName, args, deviceName) { |
| 117 | switch (browserName) { |
| 118 | case 'firefox': |
| 119 | const firefoxOptions = new firefox.Options(); |
| 120 | firefoxOptions.addArguments(...args); |
| 121 | firefoxOptions.windowSize({ |
| 122 | width: DEFAULT_E2E_INITIAL_RECT.width, |
| 123 | height: DEFAULT_E2E_INITIAL_RECT.height, |
| 124 | }); |
| 125 | return new Builder() |
| 126 | .forBrowser('firefox') |
| 127 | .setFirefoxOptions(firefoxOptions) |
| 128 | .build(); |
| 129 | |
| 130 | case 'chrome': |
| 131 | const loggingPrefs = new logging.Preferences(); |
| 132 | loggingPrefs.setLevel(logging.Type.PERFORMANCE, logging.Level.ALL); |
| 133 | |
| 134 | const chromeOptions = new chrome.Options(); |
| 135 | chromeOptions.setLoggingPrefs(loggingPrefs); |
| 136 | chromeOptions.addArguments(...args); |
| 137 | if (process.env.CHROME_BIN) { |
| 138 | chromeOptions.setChromeBinaryPath(process.env.CHROME_BIN); |
| 139 | } |
| 140 | if (deviceName) { |
| 141 | chromeOptions.setMobileEmulation({deviceName}); |
| 142 | } |
| 143 | return new Builder() |
| 144 | .forBrowser('chrome') |
| 145 | .setChromeOptions(chromeOptions) |
| 146 | .build(); |
| 147 | |
| 148 | case 'safari': |
| 149 | return new Builder().forBrowser('safari').build(); |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | /** |
| 154 | * Configure chrome args. |