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

chore(typescript): driverProviders converted to typescript #3142

Merged
merged 1 commit into from
Apr 21, 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
14 changes: 14 additions & 0 deletions lib/configParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,20 @@ export interface Config {
troubleshoot?: boolean;
exclude?: Array<string>|string;
maxSessions?: number;
seleniumAddress?: string;
webDriverProxy?: string;
disableEnvironmentOverrides?: boolean;
browserstackUser?: string;
browserstackKey?: string;
firefoxPath?: string;
seleniumServerJar?: string;
seleniumPort?: number;
localSeleniumStandaloneOpts?: {args?: any; port?: any;};
sauceAgent?: string;
sauceBuild?: string;
sauceKey?: string;
sauceSeleniumAddress?: string;
sauceUser?: string;
}

export class ConfigParser {
Expand Down
57 changes: 0 additions & 57 deletions lib/driverProviders/attachSession.js

This file was deleted.

55 changes: 55 additions & 0 deletions lib/driverProviders/attachSession.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* This is an implementation of the Attach Session Driver Provider.
* It is responsible for setting up the account object, tearing
* it down, and setting up the driver correctly.
*/
import * as q from 'q';
import {Config} from '../configParser';
import {DriverProvider} from './driverProvider';
import {Logger} from '../logger2';

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

let logger = new Logger('attachSession');

export class AttachSession extends DriverProvider {
constructor(config: Config) { super(config); }

/**
* Configure and launch (if applicable) the object's environment.
* @public
* @return {q.promise} A promise which will resolve when the environment is
* ready to test.
*/
setupEnv(): q.Promise<any> {
logger.info('Using the selenium server at ' + this.config_.seleniumAddress);
logger.info('Using session id - ' + this.config_.seleniumSessionId);
return q(undefined);
}

/**
* Getting a new driver by attaching an existing session.
*
* @public
* @return {WebDriver} webdriver instance
*/
getNewDriver(): webdriver.WebDriver {
var executor = executors.createExecutor(this.config_.seleniumAddress);
var newDriver =
webdriver.WebDriver.attachToSession(executor, this.config_.seleniumSessionId);
this.drivers_.push(newDriver);
return newDriver;
}

/**
* Maintains the existing session and does not quit the driver.
*
* @public
*/
quitDriver(): q.Promise<webdriver.WebDriver> {
let defer = q.defer<webdriver.WebDriver>();
defer.resolve(null);
return defer.promise;
}
}
90 changes: 90 additions & 0 deletions lib/driverProviders/browserStack.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/*
* This is an implementation of the Browserstack Driver Provider.
* It is responsible for setting up the account object, tearing
* it down, and setting up the driver correctly.
*/
import * as request from 'request';
import * as q from 'q';
import * as util from 'util';

import {Config} from '../configParser';
import {DriverProvider} from './driverProvider';
import {Logger} from '../logger2';

let logger = new Logger('browserstack');

export class BrowserStack extends DriverProvider {
constructor(config: Config) { super(config); }

/**
* Hook to update the BrowserStack job status.
* @public
* @param {Object} update
* @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 deferred = q.defer();
driver.getSession().then((session: webdriver.Session) => {
var jobStatus = update.passed ? 'completed' : 'error';
logger.info(
'BrowserStack results available at ' +
'https://www.browserstack.com/automate');
request(
{
url: 'https://www.browserstack.com/automate/sessions/' +
session.getId() + '.json',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' +
new Buffer(
this.config_.browserstackUser + ':' +
this.config_.browserstackKey)
.toString('base64')
},
method: 'PUT',
form: {'status': jobStatus}
},
(error: Error) => {
if (error) {
throw new Error(
'Error updating BrowserStack pass/fail status: ' +
util.inspect(error));
}
});
deferred.resolve();
});
return deferred.promise;
});
return q.all(deferredArray);
}

/**
* Configure and launch (if applicable) the object's environment.
* @public
* @return {q.promise} A promise which will resolve when the environment is
* ready to test.
*/
setupEnv(): q.Promise<any> {
var deferred = q.defer();
this.config_.capabilities['browserstack.user'] =
this.config_.browserstackUser;
this.config_.capabilities['browserstack.key'] =
this.config_.browserstackKey;
this.config_.seleniumAddress = 'http://hub.browserstack.com/wd/hub';

// Append filename to capabilities.name so that it's easier to identify
// tests.
if (this.config_.capabilities.name &&
this.config_.capabilities.shardTestFiles) {
this.config_.capabilities.name +=
(':' + this.config_.specs.toString().replace(/^.*[\\\/]/, ''));
}

logger.info(
'Using BrowserStack selenium server at ' +
this.config_.seleniumAddress);
deferred.resolve();
return deferred.promise;
}
}
91 changes: 0 additions & 91 deletions lib/driverProviders/browserstack.js

This file was deleted.

Loading