benchpress
Version:
Benchpress - a framework for e2e performance tests
52 lines • 7.58 kB
JavaScript
import { PromiseWrapper } from 'angular2/src/facade/async';
import { bind } from 'angular2/src/core/di';
import { WebDriverAdapter } from '../web_driver_adapter';
import * as webdriver from 'selenium-webdriver';
/**
* Adapter for the selenium-webdriver.
*/
export class SeleniumWebDriverAdapter extends WebDriverAdapter {
constructor(_driver) {
super();
this._driver = _driver;
}
static get PROTRACTOR_BINDINGS() { return _PROTRACTOR_BINDINGS; }
_convertPromise(thenable) {
var completer = PromiseWrapper.completer();
thenable.then(
// selenium-webdriver uses an own Node.js context,
// so we need to convert data into objects of this context.
// Previously needed for rtts_asserts.
(data) => completer.resolve(convertToLocalProcess(data)), completer.reject);
return completer.promise;
}
waitFor(callback) {
return this._convertPromise(this._driver.controlFlow().execute(callback));
}
executeScript(script) {
return this._convertPromise(this._driver.executeScript(script));
}
executeAsyncScript(script) {
return this._convertPromise(this._driver.executeAsyncScript(script));
}
capabilities() {
return this._convertPromise(this._driver.getCapabilities().then((capsObject) => capsObject.serialize()));
}
logs(type) {
// Needed as selenium-webdriver does not forward
// performance logs in the correct way via manage().logs
return this._convertPromise(this._driver.schedule(new webdriver.Command(webdriver.CommandName.GET_LOG).setParameter('type', type), 'WebDriver.manage().logs().get(' + type + ')'));
}
}
function convertToLocalProcess(data) {
var serialized = JSON.stringify(data);
if ('' + serialized === 'undefined') {
return undefined;
}
return JSON.parse(serialized);
}
var _PROTRACTOR_BINDINGS = [
bind(WebDriverAdapter)
.toFactory(() => new SeleniumWebDriverAdapter(global.browser), [])
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZW5pdW1fd2ViZHJpdmVyX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLXhCTElCclZSLnRtcC9iZW5jaHByZXNzL3NyYy93ZWJkcml2ZXIvc2VsZW5pdW1fd2ViZHJpdmVyX2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ik9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkI7T0FDakQsRUFBQyxJQUFJLEVBQW9CLE1BQU0sc0JBQXNCO09BQ3JELEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUI7T0FFL0MsS0FBSyxTQUFTLE1BQU0sb0JBQW9CO0FBRS9DOztHQUVHO0FBQ0gsOENBQThDLGdCQUFnQjtJQUc1RCxZQUFvQixPQUFZO1FBQUksT0FBTyxDQUFDO1FBQXhCLFlBQU8sR0FBUCxPQUFPLENBQUs7SUFBYSxDQUFDO0lBRjlDLFdBQVcsbUJBQW1CLEtBQWlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFJN0UsZUFBZSxDQUFDLFFBQVE7UUFDdEIsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNDLFFBQVEsQ0FBQyxJQUFJO1FBQ1Qsa0RBQWtEO1FBQ2xELDJEQUEyRDtRQUMzRCxzQ0FBc0M7UUFDdEMsS0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQVE7UUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYztRQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFjO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBWTtRQUNmLGdEQUFnRDtRQUNoRCx3REFBd0Q7UUFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQzdDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQy9FLGdDQUFnQyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7QUFDSCxDQUFDO0FBRUQsK0JBQStCLElBQUk7SUFDakMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELElBQUksb0JBQW9CLEdBQUc7SUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ2pCLFNBQVMsQ0FBQyxNQUFNLElBQUksd0JBQXdCLENBQU8sTUFBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztDQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9taXNlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge2JpbmQsIHByb3ZpZGUsIFByb3ZpZGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1dlYkRyaXZlckFkYXB0ZXJ9IGZyb20gJy4uL3dlYl9kcml2ZXJfYWRhcHRlcic7XG5cbmltcG9ydCAqIGFzIHdlYmRyaXZlciBmcm9tICdzZWxlbml1bS13ZWJkcml2ZXInO1xuXG4vKipcbiAqIEFkYXB0ZXIgZm9yIHRoZSBzZWxlbml1bS13ZWJkcml2ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWxlbml1bVdlYkRyaXZlckFkYXB0ZXIgZXh0ZW5kcyBXZWJEcml2ZXJBZGFwdGVyIHtcbiAgc3RhdGljIGdldCBQUk9UUkFDVE9SX0JJTkRJTkdTKCk6IFByb3ZpZGVyW10geyByZXR1cm4gX1BST1RSQUNUT1JfQklORElOR1M7IH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kcml2ZXI6IGFueSkgeyBzdXBlcigpOyB9XG5cbiAgX2NvbnZlcnRQcm9taXNlKHRoZW5hYmxlKSB7XG4gICAgdmFyIGNvbXBsZXRlciA9IFByb21pc2VXcmFwcGVyLmNvbXBsZXRlcigpO1xuICAgIHRoZW5hYmxlLnRoZW4oXG4gICAgICAgIC8vIHNlbGVuaXVtLXdlYmRyaXZlciB1c2VzIGFuIG93biBOb2RlLmpzIGNvbnRleHQsXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gY29udmVydCBkYXRhIGludG8gb2JqZWN0cyBvZiB0aGlzIGNvbnRleHQuXG4gICAgICAgIC8vIFByZXZpb3VzbHkgbmVlZGVkIGZvciBydHRzX2Fzc2VydHMuXG4gICAgICAgIChkYXRhKSA9PiBjb21wbGV0ZXIucmVzb2x2ZShjb252ZXJ0VG9Mb2NhbFByb2Nlc3MoZGF0YSkpLCBjb21wbGV0ZXIucmVqZWN0KTtcbiAgICByZXR1cm4gY29tcGxldGVyLnByb21pc2U7XG4gIH1cblxuICB3YWl0Rm9yKGNhbGxiYWNrKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udmVydFByb21pc2UodGhpcy5fZHJpdmVyLmNvbnRyb2xGbG93KCkuZXhlY3V0ZShjYWxsYmFjaykpO1xuICB9XG5cbiAgZXhlY3V0ZVNjcmlwdChzY3JpcHQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRQcm9taXNlKHRoaXMuX2RyaXZlci5leGVjdXRlU2NyaXB0KHNjcmlwdCkpO1xuICB9XG5cbiAgZXhlY3V0ZUFzeW5jU2NyaXB0KHNjcmlwdDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udmVydFByb21pc2UodGhpcy5fZHJpdmVyLmV4ZWN1dGVBc3luY1NjcmlwdChzY3JpcHQpKTtcbiAgfVxuXG4gIGNhcGFiaWxpdGllcygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJvbWlzZShcbiAgICAgICAgdGhpcy5fZHJpdmVyLmdldENhcGFiaWxpdGllcygpLnRoZW4oKGNhcHNPYmplY3QpID0+IGNhcHNPYmplY3Quc2VyaWFsaXplKCkpKTtcbiAgfVxuXG4gIGxvZ3ModHlwZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBOZWVkZWQgYXMgc2VsZW5pdW0td2ViZHJpdmVyIGRvZXMgbm90IGZvcndhcmRcbiAgICAvLyBwZXJmb3JtYW5jZSBsb2dzIGluIHRoZSBjb3JyZWN0IHdheSB2aWEgbWFuYWdlKCkubG9nc1xuICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJvbWlzZSh0aGlzLl9kcml2ZXIuc2NoZWR1bGUoXG4gICAgICAgIG5ldyB3ZWJkcml2ZXIuQ29tbWFuZCh3ZWJkcml2ZXIuQ29tbWFuZE5hbWUuR0VUX0xPRykuc2V0UGFyYW1ldGVyKCd0eXBlJywgdHlwZSksXG4gICAgICAgICdXZWJEcml2ZXIubWFuYWdlKCkubG9ncygpLmdldCgnICsgdHlwZSArICcpJykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb0xvY2FsUHJvY2VzcyhkYXRhKTogT2JqZWN0IHtcbiAgdmFyIHNlcmlhbGl6ZWQgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgaWYgKCcnICsgc2VyaWFsaXplZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBKU09OLnBhcnNlKHNlcmlhbGl6ZWQpO1xufVxuXG52YXIgX1BST1RSQUNUT1JfQklORElOR1MgPSBbXG4gIGJpbmQoV2ViRHJpdmVyQWRhcHRlcilcbiAgICAgIC50b0ZhY3RvcnkoKCkgPT4gbmV3IFNlbGVuaXVtV2ViRHJpdmVyQWRhcHRlcigoPGFueT5nbG9iYWwpLmJyb3dzZXIpLCBbXSlcbl07XG4iXX0=