benchpress
Version:
Benchpress - a framework for e2e performance tests
60 lines • 8.72 kB
JavaScript
import { bind, Injector, OpaqueToken } from 'angular2/src/core/di';
import { isBlank } from 'angular2/src/facade/lang';
import { BaseException } from 'angular2/src/facade/exceptions';
import { Options } from './common_options';
/**
* A WebDriverExtension implements extended commands of the webdriver protocol
* for a given browser, independent of the WebDriverAdapter.
* Needs one implementation for every supported Browser.
*/
export class WebDriverExtension {
static bindTo(childTokens) {
var res = [
bind(_CHILDREN)
.toFactory((injector) => childTokens.map(token => injector.get(token)), [Injector]),
bind(WebDriverExtension)
.toFactory((children, capabilities) => {
var delegate;
children.forEach(extension => {
if (extension.supports(capabilities)) {
delegate = extension;
}
});
if (isBlank(delegate)) {
throw new BaseException('Could not find a delegate for given capabilities!');
}
return delegate;
}, [_CHILDREN, Options.CAPABILITIES])
];
return res;
}
gc() { throw new BaseException('NYI'); }
timeBegin(name) { throw new BaseException('NYI'); }
timeEnd(name, restartName) { throw new BaseException('NYI'); }
/**
* Format:
* - cat: category of the event
* - name: event name: 'script', 'gc', 'render', ...
* - ph: phase: 'B' (begin), 'E' (end), 'b' (nestable start), 'e' (nestable end), 'X' (Complete
*event)
* - ts: timestamp in ms, e.g. 12345
* - pid: process id
* - args: arguments, e.g. {heapSize: 1234}
*
* Based on [Chrome Trace Event
*Format](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/edit)
**/
readPerfLog() { throw new BaseException('NYI'); }
perfLogFeatures() { throw new BaseException('NYI'); }
supports(capabilities) { return true; }
}
export class PerfLogFeatures {
constructor({ render = false, gc = false, frameCapture = false, userTiming = false } = {}) {
this.render = render;
this.gc = gc;
this.frameCapture = frameCapture;
this.userTiming = userTiming;
}
}
var _CHILDREN = new OpaqueToken('WebDriverExtension.children');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViX2RyaXZlcl9leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLXhCTElCclZSLnRtcC9iZW5jaHByZXNzL3NyYy93ZWJfZHJpdmVyX2V4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FBTyxFQUFDLElBQUksRUFBcUIsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQjtPQUU1RSxFQUFDLE9BQU8sRUFBWSxNQUFNLDBCQUEwQjtPQUNwRCxFQUFDLGFBQWEsRUFBbUIsTUFBTSxnQ0FBZ0M7T0FFdkUsRUFBQyxPQUFPLEVBQUMsTUFBTSxrQkFBa0I7QUFFeEM7Ozs7R0FJRztBQUNIO0lBQ0UsT0FBTyxNQUFNLENBQUMsV0FBa0I7UUFDOUIsSUFBSSxHQUFHLEdBQUc7WUFDUixJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUNWLFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNyRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztpQkFDbkIsU0FBUyxDQUNOLENBQUMsUUFBOEIsRUFBRSxZQUFZO2dCQUMzQyxJQUFJLFFBQVEsQ0FBQztnQkFDYixRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVM7b0JBQ3hCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNyQyxRQUFRLEdBQUcsU0FBUyxDQUFDO29CQUN2QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLE1BQU0sSUFBSSxhQUFhLENBQUMsbURBQW1ELENBQUMsQ0FBQztnQkFDL0UsQ0FBQztnQkFDRCxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ2xCLENBQUMsRUFDRCxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDM0MsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsRUFBRSxLQUFtQixNQUFNLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RCxTQUFTLENBQUMsSUFBWSxJQUFrQixNQUFNLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6RSxPQUFPLENBQUMsSUFBWSxFQUFFLFdBQW1CLElBQWtCLE1BQU0sSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVGOzs7Ozs7Ozs7Ozs7UUFZSTtJQUNKLFdBQVcsS0FBcUIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakUsZUFBZSxLQUFzQixNQUFNLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RSxRQUFRLENBQUMsWUFBa0MsSUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7SUFNRSxZQUNJLEVBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLFlBQVksR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBQyxHQUNlLEVBQUU7UUFDekYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2JpbmQsIHByb3ZpZGUsIFByb3ZpZGVyLCBJbmplY3RvciwgT3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmltcG9ydCB7T3B0aW9uc30gZnJvbSAnLi9jb21tb25fb3B0aW9ucyc7XG5cbi8qKlxuICogQSBXZWJEcml2ZXJFeHRlbnNpb24gaW1wbGVtZW50cyBleHRlbmRlZCBjb21tYW5kcyBvZiB0aGUgd2ViZHJpdmVyIHByb3RvY29sXG4gKiBmb3IgYSBnaXZlbiBicm93c2VyLCBpbmRlcGVuZGVudCBvZiB0aGUgV2ViRHJpdmVyQWRhcHRlci5cbiAqIE5lZWRzIG9uZSBpbXBsZW1lbnRhdGlvbiBmb3IgZXZlcnkgc3VwcG9ydGVkIEJyb3dzZXIuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXZWJEcml2ZXJFeHRlbnNpb24ge1xuICBzdGF0aWMgYmluZFRvKGNoaWxkVG9rZW5zOiBhbnlbXSk6IFByb3ZpZGVyW10ge1xuICAgIHZhciByZXMgPSBbXG4gICAgICBiaW5kKF9DSElMRFJFTilcbiAgICAgICAgICAudG9GYWN0b3J5KChpbmplY3RvcjogSW5qZWN0b3IpID0+IGNoaWxkVG9rZW5zLm1hcCh0b2tlbiA9PiBpbmplY3Rvci5nZXQodG9rZW4pKSxcbiAgICAgICAgICAgICAgICAgICAgIFtJbmplY3Rvcl0pLFxuICAgICAgYmluZChXZWJEcml2ZXJFeHRlbnNpb24pXG4gICAgICAgICAgLnRvRmFjdG9yeShcbiAgICAgICAgICAgICAgKGNoaWxkcmVuOiBXZWJEcml2ZXJFeHRlbnNpb25bXSwgY2FwYWJpbGl0aWVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGRlbGVnYXRlO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZXh0ZW5zaW9uID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24uc3VwcG9ydHMoY2FwYWJpbGl0aWVzKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZSA9IGV4dGVuc2lvbjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNCbGFuayhkZWxlZ2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBhIGRlbGVnYXRlIGZvciBnaXZlbiBjYXBhYmlsaXRpZXMhJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW19DSElMRFJFTiwgT3B0aW9ucy5DQVBBQklMSVRJRVNdKVxuICAgIF07XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGdjKCk6IFByb21pc2U8YW55PiB7IHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdOWUknKTsgfVxuXG4gIHRpbWVCZWdpbihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4geyB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignTllJJyk7IH1cblxuICB0aW1lRW5kKG5hbWU6IHN0cmluZywgcmVzdGFydE5hbWU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7IHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdOWUknKTsgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQ6XG4gICAqIC0gY2F0OiBjYXRlZ29yeSBvZiB0aGUgZXZlbnRcbiAgICogLSBuYW1lOiBldmVudCBuYW1lOiAnc2NyaXB0JywgJ2djJywgJ3JlbmRlcicsIC4uLlxuICAgKiAtIHBoOiBwaGFzZTogJ0InIChiZWdpbiksICdFJyAoZW5kKSwgJ2InIChuZXN0YWJsZSBzdGFydCksICdlJyAobmVzdGFibGUgZW5kKSwgJ1gnIChDb21wbGV0ZVxuICAgKmV2ZW50KVxuICAgKiAtIHRzOiB0aW1lc3RhbXAgaW4gbXMsIGUuZy4gMTIzNDVcbiAgICogLSBwaWQ6IHByb2Nlc3MgaWRcbiAgICogLSBhcmdzOiBhcmd1bWVudHMsIGUuZy4ge2hlYXBTaXplOiAxMjM0fVxuICAgKlxuICAgKiBCYXNlZCBvbiBbQ2hyb21lIFRyYWNlIEV2ZW50XG4gICAqRm9ybWF0XShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFDdkFDbHZGZnlBNVItUGhZVW1uNU9PUXRZTUg0aDZJMG5Tc0tjaE5BeVNVL2VkaXQpXG4gICAqKi9cbiAgcmVhZFBlcmZMb2coKTogUHJvbWlzZTxhbnlbXT4geyB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignTllJJyk7IH1cblxuICBwZXJmTG9nRmVhdHVyZXMoKTogUGVyZkxvZ0ZlYXR1cmVzIHsgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ05ZSScpOyB9XG5cbiAgc3VwcG9ydHMoY2FwYWJpbGl0aWVzOiB7W2tleTogc3RyaW5nXTogYW55fSk6IGJvb2xlYW4geyByZXR1cm4gdHJ1ZTsgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyZkxvZ0ZlYXR1cmVzIHtcbiAgcmVuZGVyOiBib29sZWFuO1xuICBnYzogYm9vbGVhbjtcbiAgZnJhbWVDYXB0dXJlOiBib29sZWFuO1xuICB1c2VyVGltaW5nOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAge3JlbmRlciA9IGZhbHNlLCBnYyA9IGZhbHNlLCBmcmFtZUNhcHR1cmUgPSBmYWxzZSwgdXNlclRpbWluZyA9IGZhbHNlfTpcbiAgICAgICAgICB7cmVuZGVyPzogYm9vbGVhbiwgZ2M/OiBib29sZWFuLCBmcmFtZUNhcHR1cmU/OiBib29sZWFuLCB1c2VyVGltaW5nPzogYm9vbGVhbn0gPSB7fSkge1xuICAgIHRoaXMucmVuZGVyID0gcmVuZGVyO1xuICAgIHRoaXMuZ2MgPSBnYztcbiAgICB0aGlzLmZyYW1lQ2FwdHVyZSA9IGZyYW1lQ2FwdHVyZTtcbiAgICB0aGlzLnVzZXJUaW1pbmcgPSB1c2VyVGltaW5nO1xuICB9XG59XG5cbnZhciBfQ0hJTERSRU4gPSBuZXcgT3BhcXVlVG9rZW4oJ1dlYkRyaXZlckV4dGVuc2lvbi5jaGlsZHJlbicpO1xuIl19