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

fix(driverProviders): Handle promise rejection when starting selenium #3989

Merged
merged 2 commits into from
Jan 19, 2017
Merged
Changes from 1 commit
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
34 changes: 19 additions & 15 deletions lib/driverProviders/local.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,6 @@ export class Local extends DriverProvider {
* ready to test.
*/
setupDriverEnv(): q.Promise<any> {
let deferred = q.defer();

this.addDefaultBinaryLocs_();
logger.info('Starting selenium standalone server...');

Expand All @@ -113,6 +111,10 @@ export class Local extends DriverProvider {
if (serverConf.port === undefined) {
serverConf.port = this.config_.seleniumPort;
}
if (!Array.isArray(serverConf.jvmArgs)) {
logger.warn('jvmArgs should be an array!');
Copy link
Contributor

@cnishina cnishina Jan 19, 2017

Choose a reason for hiding this comment

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

We should throw a ConfigError here OR change the lib/config.ts to say that jvmArgs type is string|string[].

serverConf.jvmArgs = [serverConf.jvmArgs];
}

// configure server
if (this.config_.chromeDriver) {
Expand All @@ -121,14 +123,20 @@ export class Local extends DriverProvider {

this.server_ = new remote.SeleniumServer(this.config_.seleniumServerJar, serverConf);

let deferred = q.defer();
// start local server, grab hosted address, and resolve promise
this.server_.start(this.config_.seleniumServerStartTimeout).then((url: string) => {
logger.info('Selenium standalone server started at ' + url);
this.server_.address().then((address: string) => {
this.config_.seleniumAddress = address;
deferred.resolve();
});
});
this.server_.start(this.config_.seleniumServerStartTimeout)
.then((url: string) => {
logger.info('Selenium standalone server started at ' + url);
return this.server_.address();
})
.then((address: string) => {
this.config_.seleniumAddress = address;
deferred.resolve();
})
.catch((err: string) => {
deferred.reject(err);
});

return deferred.promise;
}
Expand All @@ -143,13 +151,9 @@ export class Local extends DriverProvider {
* is down.
*/
teardownEnv(): q.Promise<any> {
let deferred = q.defer();
super.teardownEnv().then(() => {
return super.teardownEnv().then(() => {
logger.info('Shutting down selenium standalone server.');
this.server_.stop().then(() => {
deferred.resolve();
});
return this.server_.stop();
});
return deferred.promise;
}
}