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

fix(types): update for selenium-webdriver types creating transpile errors #3848

Merged
merged 1 commit into from
Dec 20, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions lib/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ export class ProtractorBrowser extends Webdriver {
* @returns {!webdriver.promise.Promise} A promise that will be resolved to an
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: way up on line 13, we have const webdriver = ..., but we only actually use webdriver in the for loop a couple lines later. Let's scope webdriver to that for loop so we don't have two copies of the same library floating around.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scoping the require('selenium-webdriver') in only the for loop

* array of the located {@link webdriver.WebElement}s.
*/
findElements(locator: Locator): webdriver.promise.Promise<any> {
findElements(locator: Locator): wdpromise.Promise<any> {
return this.element.all(locator).getWebElements();
}

Expand All @@ -572,8 +572,7 @@ export class ProtractorBrowser extends Webdriver {
* @returns {!webdriver.promise.Promise} A promise that will resolve to whether
* the element is present on the page.
*/
isElementPresent(locatorOrElement: ProtractorBy|
webdriver.WebElement): webdriver.promise.Promise<any> {
isElementPresent(locatorOrElement: ProtractorBy|WebElement): wdpromise.Promise<any> {
let element =
((locatorOrElement as any).isPresent) ? locatorOrElement : this.element(locatorOrElement);
return (element as any).isPresent();
Expand Down Expand Up @@ -823,7 +822,7 @@ export class ProtractorBrowser extends Webdriver {
* @returns {!webdriver.promise.Promise} A promise that will resolve once
* page has been changed.
*/
setLocation(url: string): webdriver.promise.Promise<any> {
setLocation(url: string): wdpromise.Promise<any> {
this.waitForAngular();
return this
.executeScriptWithDescription(
Expand All @@ -845,7 +844,7 @@ export class ProtractorBrowser extends Webdriver {
* @returns {webdriver.promise.Promise<string>} The current absolute url from
* AngularJS.
*/
getLocationAbsUrl(): webdriver.promise.Promise<any> {
getLocationAbsUrl(): wdpromise.Promise<any> {
this.waitForAngular();
return this.executeScriptWithDescription(
clientSideScripts.getLocationAbsUrl, 'Protractor.getLocationAbsUrl()', this.rootEl);
Expand Down Expand Up @@ -930,7 +929,7 @@ export class ProtractorBrowser extends Webdriver {
* @param {number=} opt_debugPort Optional port to use for the debugging
* process
*/
pause(opt_debugPort?: number): webdriver.promise.Promise<any> {
pause(opt_debugPort?: number): wdpromise.Promise<any> {
if (this.debugHelper.isAttached()) {
logger.info('Encountered browser.pause(), but debugger already attached.');
return wdpromise.fulfilled(true);
Expand Down
25 changes: 12 additions & 13 deletions lib/debugger.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as net from 'net';
import {promise as wdpromise, WebElement} from 'selenium-webdriver';
import * as util from 'util'

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

let logger = new Logger('protractor');
let webdriver = require('selenium-webdriver');
const webdriver = require('selenium-webdriver');

export class DebugHelper {
/**
Expand Down Expand Up @@ -60,17 +61,15 @@ export class DebugHelper {
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: on line 55, prefer wdpromise

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, on line 42, I think I'd prefer (wdpromise.ControlFlow as any).prototype and get rid of the webdriver variable entirely

Copy link
Contributor Author

@cnishina cnishina Dec 20, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done and removed require('selenium-webdriver');

let context: Context = {require: require};
global.list = (locator: Locator) => {
return (<Ptor>global.protractor)
.browser.findElements(locator)
.then((arr: webdriver.WebElement[]) => {
let found: string[] = [];
for (let i = 0; i < arr.length; ++i) {
arr[i].getText().then((text: string) => {
found.push(text);
});
}
return found;
return (<Ptor>global.protractor).browser.findElements(locator).then((arr: WebElement[]) => {
let found: string[] = [];
for (let i = 0; i < arr.length; ++i) {
arr[i].getText().then((text: string) => {
found.push(text);
});
}
return found;
});
};
for (let key in global) {
context[key] = global[key];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: on line 80, prefer wdpromise

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

Expand Down Expand Up @@ -230,9 +229,9 @@ export class DebugHelper {
* is done. The promise will resolve to a boolean which represents whether
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: on lines 165, 166, and 188, prefer wdpromise

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

* this is the first time that the debugger is called.
*/
private validatePortAvailability_(port: number): webdriver.promise.Promise<any> {
private validatePortAvailability_(port: number): wdpromise.Promise<any> {
if (this.debuggerValidated_) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: prefer wdpromise

return webdriver.promise.fulfilled(false);
return wdpromise.fulfilled(false);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: prefer wdpromise


let doneDeferred = webdriver.promise.defer();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: prefer wdpromise

Expand Down
13 changes: 6 additions & 7 deletions lib/driverProviders/attachSession.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@
* it down, and setting up the driver correctly.
*/
import * as q from 'q';
import {WebDriver} from 'selenium-webdriver';
import * as executors from 'selenium-webdriver/executors';

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

import {DriverProvider} from './driverProvider';

let webdriver = require('selenium-webdriver');
let executors = require('selenium-webdriver/executors');

let logger = new Logger('attachSession');

export class AttachSession extends DriverProvider {
Expand All @@ -38,9 +37,9 @@ export class AttachSession extends DriverProvider {
* @public
* @return {WebDriver} webdriver instance
*/
getNewDriver(): webdriver.WebDriver {
getNewDriver(): WebDriver {
var executor = executors.createExecutor(this.config_.seleniumAddress);
var newDriver = webdriver.WebDriver.attachToSession(executor, this.config_.seleniumSessionId);
var newDriver = WebDriver.attachToSession(executor, this.config_.seleniumSessionId);
this.drivers_.push(newDriver);
return newDriver;
}
Expand All @@ -50,8 +49,8 @@ export class AttachSession extends DriverProvider {
*
* @public
*/
quitDriver(): q.Promise<webdriver.WebDriver> {
let defer = q.defer<webdriver.WebDriver>();
quitDriver(): q.Promise<WebDriver> {
let defer = q.defer<WebDriver>();
defer.resolve(null);
return defer.promise;
}
Expand Down
5 changes: 3 additions & 2 deletions lib/driverProviders/browserStack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/
import * as https from 'https';
import * as q from 'q';
import {Session, WebDriver} from 'selenium-webdriver';
import * as util from 'util';

import {Config} from '../config';
Expand All @@ -27,9 +28,9 @@ export class BrowserStack extends DriverProvider {
* @return {q.promise} A promise that will resolve when the update is complete.
*/
updateJob(update: any): q.Promise<any> {
let deferredArray = this.drivers_.map((driver: webdriver.WebDriver) => {
let deferredArray = this.drivers_.map((driver: WebDriver) => {
let deferred = q.defer();
driver.getSession().then((session: webdriver.Session) => {
driver.getSession().then((session: Session) => {
let headers: Object = {
'Content-Type': 'application/json',
'Authorization': 'Basic ' +
Expand Down
21 changes: 10 additions & 11 deletions lib/driverProviders/direct.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,18 @@
import * as fs from 'fs';
import * as path from 'path';
import * as q from 'q';
import {Capabilities, WebDriver} from 'selenium-webdriver';
import {Driver as ChromeDriver, ServiceBuilder as ChromeServiceBuilder} from 'selenium-webdriver/chrome';
import {Driver as FirefoxDriver} from 'selenium-webdriver/firefox';

import {Config} from '../config';
import {BrowserError} from '../exitCodes';
import {Logger} from '../logger';

import {DriverProvider} from './driverProvider';

let webdriver = require('selenium-webdriver'), chrome = require('selenium-webdriver/chrome'),
firefox = require('selenium-webdriver/firefox');
let SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
let SeleniumChrome = require('webdriver-manager/built/lib/binaries/chrome_driver').ChromeDriver;
let SeleniumStandAlone = require('webdriver-manager/built/lib/binaries/stand_alone').StandAlone;

const SeleniumConfig = require('webdriver-manager/built/lib/config').Config;
const SeleniumChrome = require('webdriver-manager/built/lib/binaries/chrome_driver').ChromeDriver;

let logger = new Logger('direct');
export class Direct extends DriverProvider {
Expand Down Expand Up @@ -56,8 +55,8 @@ export class Direct extends DriverProvider {
* @override
* @return webdriver instance
*/
getNewDriver(): webdriver.WebDriver {
let driver: webdriver.WebDriver;
getNewDriver(): WebDriver {
let driver: WebDriver;
switch (this.config_.capabilities.browserName) {
case 'chrome':
let defaultChromeDriverPath = path.resolve(
Expand All @@ -73,14 +72,14 @@ export class Direct extends DriverProvider {
throw new BrowserError(logger, 'Could not find chromedriver at ' + chromeDriverFile);
}

let service = new chrome.ServiceBuilder(chromeDriverFile).build();
driver = new chrome.Driver(new webdriver.Capabilities(this.config_.capabilities), service);
let service = new ChromeServiceBuilder(chromeDriverFile).build();
driver = new ChromeDriver(new Capabilities(this.config_.capabilities), service);
break;
case 'firefox':
if (this.config_.firefoxPath) {
this.config_.capabilities['firefox_binary'] = this.config_.firefoxPath;
}
driver = new firefox.Driver(this.config_.capabilities);
driver = new FirefoxDriver(this.config_.capabilities);
break;
default:
throw new BrowserError(
Expand Down
17 changes: 8 additions & 9 deletions lib/driverProviders/driverProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@
* it down, and setting up the driver correctly.
*/
import * as q from 'q';
import {Builder, Session, WebDriver} from 'selenium-webdriver';

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

let webdriver = require('selenium-webdriver');

export class DriverProvider {
drivers_: webdriver.WebDriver[];
drivers_: WebDriver[];
config_: Config;

constructor(config: Config) {
Expand All @@ -35,7 +34,7 @@ export class DriverProvider {
* @return webdriver instance
*/
getNewDriver() {
let builder = new webdriver.Builder()
let builder = new Builder()
.usingServer(this.config_.seleniumAddress)
.usingWebDriverProxy(this.config_.webDriverProxy)
.withCapabilities(this.config_.capabilities);
Expand All @@ -53,18 +52,18 @@ export class DriverProvider {
* @public
* @param webdriver instance
*/
quitDriver(driver: webdriver.WebDriver): q.Promise<webdriver.WebDriver> {
quitDriver(driver: WebDriver): q.Promise<WebDriver> {
let driverIndex = this.drivers_.indexOf(driver);
if (driverIndex >= 0) {
this.drivers_.splice(driverIndex, 1);
}

let deferred = q.defer<webdriver.WebDriver>();
let deferred = q.defer<WebDriver>();
if (driver.getSession() === undefined) {
deferred.resolve();
} else {
driver.getSession()
.then((session_) => {
.then((session_: Session) => {
if (session_) {
driver.quit().then(function() {
deferred.resolve();
Expand Down Expand Up @@ -104,8 +103,8 @@ export class DriverProvider {
* @return {q.promise} A promise which will resolve when the environment
* is down.
*/
teardownEnv(): q.Promise<q.Promise<webdriver.WebDriver>[]> {
return q.all<any>(this.drivers_.map((driver: webdriver.WebDriver) => {
teardownEnv(): q.Promise<q.Promise<WebDriver>[]> {
return q.all<any>(this.drivers_.map((driver: WebDriver) => {
return this.quitDriver(driver);
}));
}
Expand Down
9 changes: 5 additions & 4 deletions lib/driverProviders/local.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ import {Logger} from '../logger';

import {DriverProvider} from './driverProvider';

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

let logger = new Logger('local');

export class Local extends DriverProvider {
server_: any;
constructor(config: Config) {
Expand Down
13 changes: 9 additions & 4 deletions lib/driverProviders/mock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@
* server.
*/
import * as q from 'q';
import {Session, WebDriver} from 'selenium-webdriver';
import * as executors from 'selenium-webdriver/executors';

import {Config} from '../config';
import {DriverProvider} from './driverProvider';

let webdriver = require('selenium-webdriver');
export class MockExecutor {
execute(command: any): any {}
}

export class Mock extends DriverProvider {
constructor(config?: Config) {
Expand Down Expand Up @@ -39,9 +44,9 @@ export class Mock extends DriverProvider {
* @override
* @return webdriver instance
*/
getNewDriver(): webdriver.WebDriver {
let mockSession = new webdriver.Session('test_session_id', {});
let newDriver = new webdriver.WebDriver(mockSession, new Mock());
getNewDriver(): WebDriver {
let mockSession = new Session('test_session_id', {});
let newDriver = new WebDriver(mockSession, new MockExecutor());
this.drivers_.push(newDriver);
return newDriver;
}
Expand Down
7 changes: 4 additions & 3 deletions lib/driverProviders/sauce.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@
*/

import * as q from 'q';
import {Session, WebDriver} from 'selenium-webdriver';
import * as util from 'util';

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

import {DriverProvider} from './driverProvider';

let SauceLabs = require('saucelabs');
const SauceLabs = require('saucelabs');

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