Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Commit fcceda4

Browse files
committed
deps(webdriver-manager): use replacement
- Current workaround to use webdriver-manager-replacement until we publish a beta release of webdriver-manager
1 parent 3b7a3f7 commit fcceda4

File tree

6 files changed

+143
-408
lines changed

6 files changed

+143
-408
lines changed

bin/webdriver-manager

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env node
22

3-
require('webdriver-manager');
3+
require('webdriver-manager-replacement');

circle.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ jobs:
5252
name: Selenium Start
5353
background: true
5454
command: |
55-
./node_modules/webdriver-manager/bin/webdriver-manager update
56-
./node_modules/.bin/webdriver-manager-replacement update --gecko false
57-
./node_modules/.bin/webdriver-manager-replacement start --gecko false
55+
./node_modules/.bin/webdriver-manager update
56+
./node_modules/.bin/webdriver-manager start
5857
5958
- run:
6059
name: TestApp Start

lib/driverProviders/direct.ts

+9-26
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
* it down, and setting up the driver correctly.
55
*/
66
import * as fs from 'fs';
7-
import * as path from 'path';
87
import {Capabilities, WebDriver} from 'selenium-webdriver';
9-
import {ServiceBuilder as ChromeServiceBuilder} from 'selenium-webdriver/chrome';
8+
import {ServiceBuilder as ChromeServiceBuilder, Driver as DriverForChrome} from 'selenium-webdriver/chrome';
9+
import {ServiceBuilder as FirefoxServiceBuilder, Driver as DriverForFirefox} from 'selenium-webdriver/firefox';
1010

1111
import {Config} from '../config';
1212
import {BrowserError} from '../exitCodes';
1313
import {Logger} from '../logger';
1414

1515
import {DriverProvider} from './driverProvider';
1616

17-
const SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
17+
import {ChromeDriver, GeckoDriver} from 'webdriver-manager-replacement';
1818

1919
let logger = new Logger('direct');
2020
export class Direct extends DriverProvider {
@@ -60,14 +60,11 @@ export class Direct extends DriverProvider {
6060
chromeDriverFile = this.config_.chromeDriver;
6161
} else {
6262
try {
63-
let updateJson = path.resolve(SeleniumConfig.getSeleniumDir(), 'update-config.json');
64-
let updateConfig = JSON.parse(fs.readFileSync(updateJson).toString());
65-
chromeDriverFile = updateConfig.chrome.last;
63+
chromeDriverFile = new ChromeDriver().getBinaryPath();
6664
} catch (e) {
6765
throw new BrowserError(
6866
logger,
69-
'Could not find update-config.json. ' +
70-
'Run \'webdriver-manager update\' to download binaries.');
67+
'Run \'webdriver-manager update\' to download binaries.');
7168
}
7269
}
7370

@@ -79,27 +76,19 @@ export class Direct extends DriverProvider {
7976
}
8077

8178
let chromeService = new ChromeServiceBuilder(chromeDriverFile).build();
82-
// driver = ChromeDriver.createSession(new Capabilities(this.config_.capabilities),
83-
// chromeService);
84-
// TODO(ralphj): fix typings
85-
driver =
86-
require('selenium-webdriver/chrome')
87-
.Driver.createSession(new Capabilities(this.config_.capabilities), chromeService);
79+
driver = DriverForChrome.createSession(new Capabilities(this.config_.capabilities), chromeService);
8880
break;
8981
case 'firefox':
9082
let geckoDriverFile: string;
9183
if (this.config_.geckoDriver) {
9284
geckoDriverFile = this.config_.geckoDriver;
9385
} else {
9486
try {
95-
let updateJson = path.resolve(SeleniumConfig.getSeleniumDir(), 'update-config.json');
96-
let updateConfig = JSON.parse(fs.readFileSync(updateJson).toString());
97-
geckoDriverFile = updateConfig.gecko.last;
87+
geckoDriverFile = new GeckoDriver().getBinaryPath();
9888
} catch (e) {
9989
throw new BrowserError(
10090
logger,
101-
'Could not find update-config.json. ' +
102-
'Run \'webdriver-manager update\' to download binaries.');
91+
'Run \'webdriver-manager update\' to download binaries.');
10392
}
10493
}
10594

@@ -110,14 +99,8 @@ export class Direct extends DriverProvider {
11099
'. Run \'webdriver-manager update\' to download binaries.');
111100
}
112101

113-
// TODO (mgiambalvo): Turn this into an import when the selenium typings are updated.
114-
const FirefoxServiceBuilder = require('selenium-webdriver/firefox').ServiceBuilder;
115-
116102
let firefoxService = new FirefoxServiceBuilder(geckoDriverFile).build();
117-
// TODO(mgiambalvo): Fix typings.
118-
driver =
119-
require('selenium-webdriver/firefox')
120-
.Driver.createSession(new Capabilities(this.config_.capabilities), firefoxService);
103+
driver = DriverForFirefox.createSession(new Capabilities(this.config_.capabilities), firefoxService);
121104
break;
122105
default:
123106
throw new BrowserError(

lib/driverProviders/local.ts

+8-18
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@
77
* so that we only start the local selenium once per entire launch.
88
*/
99
import * as fs from 'fs';
10-
import * as path from 'path';
1110

1211
import {Config} from '../config';
1312
import {BrowserError, ConfigError} from '../exitCodes';
1413
import {Logger} from '../logger';
1514

1615
import {DriverProvider} from './driverProvider';
1716

18-
const SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
19-
const remote = require('selenium-webdriver/remote');
17+
import {SeleniumServer} from 'selenium-webdriver/remote';
18+
import {ChromeDriver, GeckoDriver, SeleniumServer as WdmSeleniumServer} from 'webdriver-manager-replacement';
2019

2120
let logger = new Logger('local');
2221

@@ -37,14 +36,11 @@ export class Local extends DriverProvider {
3736
'Attempting to find the SeleniumServerJar in the default ' +
3837
'location used by webdriver-manager');
3938
try {
40-
let updateJson = path.resolve(SeleniumConfig.getSeleniumDir(), 'update-config.json');
41-
let updateConfig = JSON.parse(fs.readFileSync(updateJson).toString());
42-
this.config_.seleniumServerJar = updateConfig.standalone.last;
39+
this.config_.seleniumServerJar = new WdmSeleniumServer().getBinaryPath();
4340
} catch (err) {
4441
throw new BrowserError(
4542
logger,
46-
'No update-config.json found.' +
47-
' Run \'webdriver-manager update\' to download binaries.');
43+
'Run \'webdriver-manager update\' to download binaries.');
4844
}
4945
}
5046
if (!fs.existsSync(this.config_.seleniumServerJar)) {
@@ -60,13 +56,10 @@ export class Local extends DriverProvider {
6056
'location used by webdriver-manager');
6157

6258
try {
63-
let updateJson = path.resolve(SeleniumConfig.getSeleniumDir(), 'update-config.json');
64-
let updateConfig = JSON.parse(fs.readFileSync(updateJson).toString());
65-
this.config_.chromeDriver = updateConfig.chrome.last;
59+
this.config_.chromeDriver = new ChromeDriver().getBinaryPath();
6660
} catch (err) {
6761
throw new BrowserError(
6862
logger,
69-
'No update-config.json found. ' +
7063
'Run \'webdriver-manager update\' to download binaries.');
7164
}
7265
}
@@ -91,14 +84,11 @@ export class Local extends DriverProvider {
9184
'location used by webdriver-manager');
9285

9386
try {
94-
let updateJson = path.resolve(SeleniumConfig.getSeleniumDir(), 'update-config.json');
95-
let updateConfig = JSON.parse(fs.readFileSync(updateJson).toString());
96-
this.config_.geckoDriver = updateConfig.gecko.last;
87+
this.config_.geckoDriver = new GeckoDriver().getBinaryPath();
9788
} catch (err) {
9889
throw new BrowserError(
9990
logger,
100-
'No update-config.json found. ' +
101-
'Run \'webdriver-manager update\' to download binaries.');
91+
'Run \'webdriver-manager update\' to download binaries.');
10292
}
10393
}
10494

@@ -152,7 +142,7 @@ export class Local extends DriverProvider {
152142
serverConf.jvmArgs.push('-Dwebdriver.gecko.driver=' + this.config_.geckoDriver);
153143
}
154144

155-
this.server_ = new remote.SeleniumServer(this.config_.seleniumServerJar, serverConf);
145+
this.server_ = new SeleniumServer(this.config_.seleniumServerJar, serverConf);
156146

157147
// start local server, grab hosted address, and resolve promise
158148
const url = await this.server_.start(this.config_.seleniumServerStartTimeout);

0 commit comments

Comments
 (0)