@angular/benchpress
Version:
Benchpress - a framework for e2e performance tests
82 lines • 9.34 kB
JavaScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { InjectionToken, Injector } from '@angular/core';
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 provideFirstSupported(childTokens) {
const res = [
{
provide: _CHILDREN,
useFactory: (injector) => childTokens.map(token => injector.get(token)),
deps: [Injector]
},
{
provide: WebDriverExtension,
useFactory: (children, capabilities) => {
let delegate = undefined;
children.forEach(extension => {
if (extension.supports(capabilities)) {
delegate = extension;
}
});
if (!delegate) {
throw new Error('Could not find a delegate for given capabilities!');
}
return delegate;
},
deps: [_CHILDREN, Options.CAPABILITIES]
}
];
return res;
}
gc() {
throw new Error('NYI');
}
timeBegin(name) {
throw new Error('NYI');
}
timeEnd(name, restartName) {
throw new Error('NYI');
}
/**
* Format:
* - cat: category of the event
* - name: event name: 'script', 'gc', 'render', ...
* - ph: phase: 'B' (begin), 'E' (end), 'X' (Complete event), 'I' (Instant 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 Error('NYI');
}
perfLogFeatures() {
throw new Error('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;
}
}
const _CHILDREN = new InjectionToken('WebDriverExtension.children');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViX2RyaXZlcl9leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iZW5jaHByZXNzL3NyYy93ZWJfZHJpdmVyX2V4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFtQnpDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLGtCQUFrQjtJQUN0QyxNQUFNLENBQUMscUJBQXFCLENBQUMsV0FBa0I7UUFDN0MsTUFBTSxHQUFHLEdBQUc7WUFDVjtnQkFDRSxPQUFPLEVBQUUsU0FBUztnQkFDbEIsVUFBVSxFQUFFLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pGLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUNqQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFVBQVUsRUFBRSxDQUFDLFFBQThCLEVBQUUsWUFBa0MsRUFBRSxFQUFFO29CQUNqRixJQUFJLFFBQVEsR0FBdUIsU0FBVSxDQUFDO29CQUM5QyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUMzQixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7NEJBQ3BDLFFBQVEsR0FBRyxTQUFTLENBQUM7eUJBQ3RCO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUU7d0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO3FCQUN0RTtvQkFDRCxPQUFPLFFBQVEsQ0FBQztnQkFDbEIsQ0FBQztnQkFDRCxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQzthQUN4QztTQUNGLENBQUM7UUFDRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxFQUFFO1FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVksRUFBRSxXQUF3QjtRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7UUFXSTtJQUNKLFdBQVc7UUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxDQUFDLFlBQWtDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFNMUIsWUFDSSxFQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxZQUFZLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxLQUFLLEtBQ2dCLEVBQUU7UUFDekYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0aW9uVG9rZW4sIEluamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPcHRpb25zfSBmcm9tICcuL2NvbW1vbl9vcHRpb25zJztcblxuZXhwb3J0IHR5cGUgUGVyZkxvZ0V2ZW50ID0ge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbn0me1xuICBwaD86ICdYJyB8ICdCJyB8ICdFJyB8ICdJJyxcbiAgdHM/OiBudW1iZXIsXG4gIGR1cj86IG51bWJlcixcbiAgbmFtZT86IHN0cmluZyxcbiAgcGlkPzogc3RyaW5nLFxuICBhcmdzPzoge1xuICAgIGVuY29kZWREYXRhTGVuZ3RoPzogbnVtYmVyLFxuICAgIHVzZWRIZWFwU2l6ZT86IG51bWJlcixcbiAgICBtYWpvckdjPzogYm9vbGVhbixcbiAgICB1cmw/OiBzdHJpbmcsXG4gICAgbWV0aG9kPzogc3RyaW5nXG4gIH1cbn07XG5cbi8qKlxuICogQSBXZWJEcml2ZXJFeHRlbnNpb24gaW1wbGVtZW50cyBleHRlbmRlZCBjb21tYW5kcyBvZiB0aGUgd2ViZHJpdmVyIHByb3RvY29sXG4gKiBmb3IgYSBnaXZlbiBicm93c2VyLCBpbmRlcGVuZGVudCBvZiB0aGUgV2ViRHJpdmVyQWRhcHRlci5cbiAqIE5lZWRzIG9uZSBpbXBsZW1lbnRhdGlvbiBmb3IgZXZlcnkgc3VwcG9ydGVkIEJyb3dzZXIuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXZWJEcml2ZXJFeHRlbnNpb24ge1xuICBzdGF0aWMgcHJvdmlkZUZpcnN0U3VwcG9ydGVkKGNoaWxkVG9rZW5zOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCByZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IF9DSElMRFJFTixcbiAgICAgICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4gY2hpbGRUb2tlbnMubWFwKHRva2VuID0+IGluamVjdG9yLmdldCh0b2tlbikpLFxuICAgICAgICBkZXBzOiBbSW5qZWN0b3JdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBXZWJEcml2ZXJFeHRlbnNpb24sXG4gICAgICAgIHVzZUZhY3Rvcnk6IChjaGlsZHJlbjogV2ViRHJpdmVyRXh0ZW5zaW9uW10sIGNhcGFiaWxpdGllczoge1trZXk6IHN0cmluZ106IGFueX0pID0+IHtcbiAgICAgICAgICBsZXQgZGVsZWdhdGU6IFdlYkRyaXZlckV4dGVuc2lvbiA9IHVuZGVmaW5lZCE7XG4gICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChleHRlbnNpb24gPT4ge1xuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbi5zdXBwb3J0cyhjYXBhYmlsaXRpZXMpKSB7XG4gICAgICAgICAgICAgIGRlbGVnYXRlID0gZXh0ZW5zaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghZGVsZWdhdGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgYSBkZWxlZ2F0ZSBmb3IgZ2l2ZW4gY2FwYWJpbGl0aWVzIScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGVsZWdhdGU7XG4gICAgICAgIH0sXG4gICAgICAgIGRlcHM6IFtfQ0hJTERSRU4sIE9wdGlvbnMuQ0FQQUJJTElUSUVTXVxuICAgICAgfVxuICAgIF07XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGdjKCk6IFByb21pc2U8YW55PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOWUknKTtcbiAgfVxuXG4gIHRpbWVCZWdpbihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTllJJyk7XG4gIH1cblxuICB0aW1lRW5kKG5hbWU6IHN0cmluZywgcmVzdGFydE5hbWU6IHN0cmluZ3xudWxsKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05ZSScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdDpcbiAgICogLSBjYXQ6IGNhdGVnb3J5IG9mIHRoZSBldmVudFxuICAgKiAtIG5hbWU6IGV2ZW50IG5hbWU6ICdzY3JpcHQnLCAnZ2MnLCAncmVuZGVyJywgLi4uXG4gICAqIC0gcGg6IHBoYXNlOiAnQicgKGJlZ2luKSwgJ0UnIChlbmQpLCAnWCcgKENvbXBsZXRlIGV2ZW50KSwgJ0knIChJbnN0YW50IGV2ZW50KVxuICAgKiAtIHRzOiB0aW1lc3RhbXAgaW4gbXMsIGUuZy4gMTIzNDVcbiAgICogLSBwaWQ6IHByb2Nlc3MgaWRcbiAgICogLSBhcmdzOiBhcmd1bWVudHMsIGUuZy4ge2hlYXBTaXplOiAxMjM0fVxuICAgKlxuICAgKiBCYXNlZCBvbiBbQ2hyb21lIFRyYWNlIEV2ZW50XG4gICAqRm9ybWF0XShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFDdkFDbHZGZnlBNVItUGhZVW1uNU9PUXRZTUg0aDZJMG5Tc0tjaE5BeVNVL2VkaXQpXG4gICAqKi9cbiAgcmVhZFBlcmZMb2coKTogUHJvbWlzZTxQZXJmTG9nRXZlbnRbXT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTllJJyk7XG4gIH1cblxuICBwZXJmTG9nRmVhdHVyZXMoKTogUGVyZkxvZ0ZlYXR1cmVzIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05ZSScpO1xuICB9XG5cbiAgc3VwcG9ydHMoY2FwYWJpbGl0aWVzOiB7W2tleTogc3RyaW5nXTogYW55fSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJmTG9nRmVhdHVyZXMge1xuICByZW5kZXI6IGJvb2xlYW47XG4gIGdjOiBib29sZWFuO1xuICBmcmFtZUNhcHR1cmU6IGJvb2xlYW47XG4gIHVzZXJUaW1pbmc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICB7cmVuZGVyID0gZmFsc2UsIGdjID0gZmFsc2UsIGZyYW1lQ2FwdHVyZSA9IGZhbHNlLCB1c2VyVGltaW5nID0gZmFsc2V9OlxuICAgICAgICAgIHtyZW5kZXI/OiBib29sZWFuLCBnYz86IGJvb2xlYW4sIGZyYW1lQ2FwdHVyZT86IGJvb2xlYW4sIHVzZXJUaW1pbmc/OiBib29sZWFufSA9IHt9KSB7XG4gICAgdGhpcy5yZW5kZXIgPSByZW5kZXI7XG4gICAgdGhpcy5nYyA9IGdjO1xuICAgIHRoaXMuZnJhbWVDYXB0dXJlID0gZnJhbWVDYXB0dXJlO1xuICAgIHRoaXMudXNlclRpbWluZyA9IHVzZXJUaW1pbmc7XG4gIH1cbn1cblxuY29uc3QgX0NISUxEUkVOID0gbmV3IEluamVjdGlvblRva2VuKCdXZWJEcml2ZXJFeHRlbnNpb24uY2hpbGRyZW4nKTtcbiJdfQ==