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

Commit 83694f5

Browse files
authored
fix(types): update for selenium-webdriver types creating transpile errors (#3848)
- pin package.json to a specific version of @types/selenium-webdriver
1 parent 41b5a19 commit 83694f5

16 files changed

+85
-82
lines changed

lib/browser.ts

+5-6
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ export class ProtractorBrowser extends Webdriver {
562562
* @returns {!webdriver.promise.Promise} A promise that will be resolved to an
563563
* array of the located {@link webdriver.WebElement}s.
564564
*/
565-
findElements(locator: Locator): webdriver.promise.Promise<any> {
565+
findElements(locator: Locator): wdpromise.Promise<any> {
566566
return this.element.all(locator).getWebElements();
567567
}
568568

@@ -572,8 +572,7 @@ export class ProtractorBrowser extends Webdriver {
572572
* @returns {!webdriver.promise.Promise} A promise that will resolve to whether
573573
* the element is present on the page.
574574
*/
575-
isElementPresent(locatorOrElement: ProtractorBy|
576-
webdriver.WebElement): webdriver.promise.Promise<any> {
575+
isElementPresent(locatorOrElement: ProtractorBy|WebElement): wdpromise.Promise<any> {
577576
let element =
578577
((locatorOrElement as any).isPresent) ? locatorOrElement : this.element(locatorOrElement);
579578
return (element as any).isPresent();
@@ -823,7 +822,7 @@ export class ProtractorBrowser extends Webdriver {
823822
* @returns {!webdriver.promise.Promise} A promise that will resolve once
824823
* page has been changed.
825824
*/
826-
setLocation(url: string): webdriver.promise.Promise<any> {
825+
setLocation(url: string): wdpromise.Promise<any> {
827826
this.waitForAngular();
828827
return this
829828
.executeScriptWithDescription(
@@ -845,7 +844,7 @@ export class ProtractorBrowser extends Webdriver {
845844
* @returns {webdriver.promise.Promise<string>} The current absolute url from
846845
* AngularJS.
847846
*/
848-
getLocationAbsUrl(): webdriver.promise.Promise<any> {
847+
getLocationAbsUrl(): wdpromise.Promise<any> {
849848
this.waitForAngular();
850849
return this.executeScriptWithDescription(
851850
clientSideScripts.getLocationAbsUrl, 'Protractor.getLocationAbsUrl()', this.rootEl);
@@ -930,7 +929,7 @@ export class ProtractorBrowser extends Webdriver {
930929
* @param {number=} opt_debugPort Optional port to use for the debugging
931930
* process
932931
*/
933-
pause(opt_debugPort?: number): webdriver.promise.Promise<any> {
932+
pause(opt_debugPort?: number): wdpromise.Promise<any> {
934933
if (this.debugHelper.isAttached()) {
935934
logger.info('Encountered browser.pause(), but debugger already attached.');
936935
return wdpromise.fulfilled(true);

lib/debugger.ts

+12-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as net from 'net';
2+
import {promise as wdpromise, WebElement} from 'selenium-webdriver';
23
import * as util from 'util'
34

45
import {ProtractorBrowser} from './browser';
@@ -11,7 +12,7 @@ declare var global: any;
1112
declare var process: any;
1213

1314
let logger = new Logger('protractor');
14-
let webdriver = require('selenium-webdriver');
15+
const webdriver = require('selenium-webdriver');
1516

1617
export class DebugHelper {
1718
/**
@@ -60,17 +61,15 @@ export class DebugHelper {
6061
}
6162
let context: Context = {require: require};
6263
global.list = (locator: Locator) => {
63-
return (<Ptor>global.protractor)
64-
.browser.findElements(locator)
65-
.then((arr: webdriver.WebElement[]) => {
66-
let found: string[] = [];
67-
for (let i = 0; i < arr.length; ++i) {
68-
arr[i].getText().then((text: string) => {
69-
found.push(text);
70-
});
71-
}
72-
return found;
64+
return (<Ptor>global.protractor).browser.findElements(locator).then((arr: WebElement[]) => {
65+
let found: string[] = [];
66+
for (let i = 0; i < arr.length; ++i) {
67+
arr[i].getText().then((text: string) => {
68+
found.push(text);
7369
});
70+
}
71+
return found;
72+
});
7473
};
7574
for (let key in global) {
7675
context[key] = global[key];
@@ -230,9 +229,9 @@ export class DebugHelper {
230229
* is done. The promise will resolve to a boolean which represents whether
231230
* this is the first time that the debugger is called.
232231
*/
233-
private validatePortAvailability_(port: number): webdriver.promise.Promise<any> {
232+
private validatePortAvailability_(port: number): wdpromise.Promise<any> {
234233
if (this.debuggerValidated_) {
235-
return webdriver.promise.fulfilled(false);
234+
return wdpromise.fulfilled(false);
236235
}
237236

238237
let doneDeferred = webdriver.promise.defer();

lib/driverProviders/attachSession.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
* it down, and setting up the driver correctly.
55
*/
66
import * as q from 'q';
7+
import {WebDriver} from 'selenium-webdriver';
8+
import * as executors from 'selenium-webdriver/executors';
79

810
import {Config} from '../config';
911
import {Logger} from '../logger';
1012

1113
import {DriverProvider} from './driverProvider';
1214

13-
let webdriver = require('selenium-webdriver');
14-
let executors = require('selenium-webdriver/executors');
15-
1615
let logger = new Logger('attachSession');
1716

1817
export class AttachSession extends DriverProvider {
@@ -38,9 +37,9 @@ export class AttachSession extends DriverProvider {
3837
* @public
3938
* @return {WebDriver} webdriver instance
4039
*/
41-
getNewDriver(): webdriver.WebDriver {
40+
getNewDriver(): WebDriver {
4241
var executor = executors.createExecutor(this.config_.seleniumAddress);
43-
var newDriver = webdriver.WebDriver.attachToSession(executor, this.config_.seleniumSessionId);
42+
var newDriver = WebDriver.attachToSession(executor, this.config_.seleniumSessionId);
4443
this.drivers_.push(newDriver);
4544
return newDriver;
4645
}
@@ -50,8 +49,8 @@ export class AttachSession extends DriverProvider {
5049
*
5150
* @public
5251
*/
53-
quitDriver(): q.Promise<webdriver.WebDriver> {
54-
let defer = q.defer<webdriver.WebDriver>();
52+
quitDriver(): q.Promise<WebDriver> {
53+
let defer = q.defer<WebDriver>();
5554
defer.resolve(null);
5655
return defer.promise;
5756
}

lib/driverProviders/browserStack.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
import * as https from 'https';
77
import * as q from 'q';
8+
import {Session, WebDriver} from 'selenium-webdriver';
89
import * as util from 'util';
910

1011
import {Config} from '../config';
@@ -27,9 +28,9 @@ export class BrowserStack extends DriverProvider {
2728
* @return {q.promise} A promise that will resolve when the update is complete.
2829
*/
2930
updateJob(update: any): q.Promise<any> {
30-
let deferredArray = this.drivers_.map((driver: webdriver.WebDriver) => {
31+
let deferredArray = this.drivers_.map((driver: WebDriver) => {
3132
let deferred = q.defer();
32-
driver.getSession().then((session: webdriver.Session) => {
33+
driver.getSession().then((session: Session) => {
3334
let headers: Object = {
3435
'Content-Type': 'application/json',
3536
'Authorization': 'Basic ' +

lib/driverProviders/direct.ts

+10-11
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,18 @@
66
import * as fs from 'fs';
77
import * as path from 'path';
88
import * as q from 'q';
9+
import {Capabilities, WebDriver} from 'selenium-webdriver';
10+
import {Driver as ChromeDriver, ServiceBuilder as ChromeServiceBuilder} from 'selenium-webdriver/chrome';
11+
import {Driver as FirefoxDriver} from 'selenium-webdriver/firefox';
912

1013
import {Config} from '../config';
1114
import {BrowserError} from '../exitCodes';
1215
import {Logger} from '../logger';
1316

1417
import {DriverProvider} from './driverProvider';
1518

16-
let webdriver = require('selenium-webdriver'), chrome = require('selenium-webdriver/chrome'),
17-
firefox = require('selenium-webdriver/firefox');
18-
let SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
19-
let SeleniumChrome = require('webdriver-manager/built/lib/binaries/chrome_driver').ChromeDriver;
20-
let SeleniumStandAlone = require('webdriver-manager/built/lib/binaries/stand_alone').StandAlone;
21-
19+
const SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
20+
const SeleniumChrome = require('webdriver-manager/built/lib/binaries/chrome_driver').ChromeDriver;
2221

2322
let logger = new Logger('direct');
2423
export class Direct extends DriverProvider {
@@ -56,8 +55,8 @@ export class Direct extends DriverProvider {
5655
* @override
5756
* @return webdriver instance
5857
*/
59-
getNewDriver(): webdriver.WebDriver {
60-
let driver: webdriver.WebDriver;
58+
getNewDriver(): WebDriver {
59+
let driver: WebDriver;
6160
switch (this.config_.capabilities.browserName) {
6261
case 'chrome':
6362
let defaultChromeDriverPath = path.resolve(
@@ -73,14 +72,14 @@ export class Direct extends DriverProvider {
7372
throw new BrowserError(logger, 'Could not find chromedriver at ' + chromeDriverFile);
7473
}
7574

76-
let service = new chrome.ServiceBuilder(chromeDriverFile).build();
77-
driver = new chrome.Driver(new webdriver.Capabilities(this.config_.capabilities), service);
75+
let service = new ChromeServiceBuilder(chromeDriverFile).build();
76+
driver = new ChromeDriver(new Capabilities(this.config_.capabilities), service);
7877
break;
7978
case 'firefox':
8079
if (this.config_.firefoxPath) {
8180
this.config_.capabilities['firefox_binary'] = this.config_.firefoxPath;
8281
}
83-
driver = new firefox.Driver(this.config_.capabilities);
82+
driver = new FirefoxDriver(this.config_.capabilities);
8483
break;
8584
default:
8685
throw new BrowserError(

lib/driverProviders/driverProvider.ts

+8-9
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
* it down, and setting up the driver correctly.
55
*/
66
import * as q from 'q';
7+
import {Builder, Session, WebDriver} from 'selenium-webdriver';
78

89
import {Config} from '../config';
910

10-
let webdriver = require('selenium-webdriver');
11-
1211
export class DriverProvider {
13-
drivers_: webdriver.WebDriver[];
12+
drivers_: WebDriver[];
1413
config_: Config;
1514

1615
constructor(config: Config) {
@@ -35,7 +34,7 @@ export class DriverProvider {
3534
* @return webdriver instance
3635
*/
3736
getNewDriver() {
38-
let builder = new webdriver.Builder()
37+
let builder = new Builder()
3938
.usingServer(this.config_.seleniumAddress)
4039
.usingWebDriverProxy(this.config_.webDriverProxy)
4140
.withCapabilities(this.config_.capabilities);
@@ -53,18 +52,18 @@ export class DriverProvider {
5352
* @public
5453
* @param webdriver instance
5554
*/
56-
quitDriver(driver: webdriver.WebDriver): q.Promise<webdriver.WebDriver> {
55+
quitDriver(driver: WebDriver): q.Promise<WebDriver> {
5756
let driverIndex = this.drivers_.indexOf(driver);
5857
if (driverIndex >= 0) {
5958
this.drivers_.splice(driverIndex, 1);
6059
}
6160

62-
let deferred = q.defer<webdriver.WebDriver>();
61+
let deferred = q.defer<WebDriver>();
6362
if (driver.getSession() === undefined) {
6463
deferred.resolve();
6564
} else {
6665
driver.getSession()
67-
.then((session_) => {
66+
.then((session_: Session) => {
6867
if (session_) {
6968
driver.quit().then(function() {
7069
deferred.resolve();
@@ -104,8 +103,8 @@ export class DriverProvider {
104103
* @return {q.promise} A promise which will resolve when the environment
105104
* is down.
106105
*/
107-
teardownEnv(): q.Promise<q.Promise<webdriver.WebDriver>[]> {
108-
return q.all<any>(this.drivers_.map((driver: webdriver.WebDriver) => {
106+
teardownEnv(): q.Promise<q.Promise<WebDriver>[]> {
107+
return q.all<any>(this.drivers_.map((driver: WebDriver) => {
109108
return this.quitDriver(driver);
110109
}));
111110
}

lib/driverProviders/local.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ import {Logger} from '../logger';
1616

1717
import {DriverProvider} from './driverProvider';
1818

19-
let SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
20-
let SeleniumChrome = require('webdriver-manager/built/lib/binaries/chrome_driver').ChromeDriver;
21-
let SeleniumStandAlone = require('webdriver-manager/built/lib/binaries/stand_alone').StandAlone;
22-
let remote = require('selenium-webdriver/remote');
19+
const SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
20+
const SeleniumChrome = require('webdriver-manager/built/lib/binaries/chrome_driver').ChromeDriver;
21+
const SeleniumStandAlone = require('webdriver-manager/built/lib/binaries/stand_alone').StandAlone;
22+
const remote = require('selenium-webdriver/remote');
2323

2424
let logger = new Logger('local');
25+
2526
export class Local extends DriverProvider {
2627
server_: any;
2728
constructor(config: Config) {

lib/driverProviders/mock.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@
44
* server.
55
*/
66
import * as q from 'q';
7+
import {Session, WebDriver} from 'selenium-webdriver';
8+
import * as executors from 'selenium-webdriver/executors';
9+
710
import {Config} from '../config';
811
import {DriverProvider} from './driverProvider';
912

10-
let webdriver = require('selenium-webdriver');
13+
export class MockExecutor {
14+
execute(command: any): any {}
15+
}
1116

1217
export class Mock extends DriverProvider {
1318
constructor(config?: Config) {
@@ -39,9 +44,9 @@ export class Mock extends DriverProvider {
3944
* @override
4045
* @return webdriver instance
4146
*/
42-
getNewDriver(): webdriver.WebDriver {
43-
let mockSession = new webdriver.Session('test_session_id', {});
44-
let newDriver = new webdriver.WebDriver(mockSession, new Mock());
47+
getNewDriver(): WebDriver {
48+
let mockSession = new Session('test_session_id', {});
49+
let newDriver = new WebDriver(mockSession, new MockExecutor());
4550
this.drivers_.push(newDriver);
4651
return newDriver;
4752
}

lib/driverProviders/sauce.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
*/
66

77
import * as q from 'q';
8+
import {Session, WebDriver} from 'selenium-webdriver';
89
import * as util from 'util';
910

1011
import {Config} from '../config';
1112
import {Logger} from '../logger';
1213

1314
import {DriverProvider} from './driverProvider';
1415

15-
let SauceLabs = require('saucelabs');
16+
const SauceLabs = require('saucelabs');
1617

1718
let logger = new Logger('sauce');
1819
export class Sauce extends DriverProvider {
@@ -29,9 +30,9 @@ export class Sauce extends DriverProvider {
2930
* @return {q.promise} A promise that will resolve when the update is complete.
3031
*/
3132
updateJob(update: any): q.Promise<any> {
32-
var deferredArray = this.drivers_.map((driver: webdriver.WebDriver) => {
33+
var deferredArray = this.drivers_.map((driver: WebDriver) => {
3334
var deferred = q.defer();
34-
driver.getSession().then((session: webdriver.Session) => {
35+
driver.getSession().then((session: Session) => {
3536
logger.info('SauceLabs results available at http://saucelabs.com/jobs/' + session.getId());
3637
this.sauceServer_.updateJob(session.getId(), update, (err: Error) => {
3738
if (err) {

0 commit comments

Comments
 (0)