UNPKG

@angular/benchpress

Version:

Benchpress - a framework for e2e performance tests

74 lines 8.28 kB
/** * @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 */ var UserMetric_1; import { __decorate, __metadata, __param } from "tslib"; import { Inject, Injectable } from '@angular/core'; import { Options } from '../common_options'; import { Metric } from '../metric'; import { WebDriverAdapter } from '../web_driver_adapter'; let UserMetric = UserMetric_1 = class UserMetric extends Metric { constructor(_userMetrics, _wdAdapter) { super(); this._userMetrics = _userMetrics; this._wdAdapter = _wdAdapter; } /** * Starts measuring */ beginMeasure() { return Promise.resolve(true); } /** * Ends measuring. */ endMeasure(restart) { let resolve; let reject; const promise = new Promise((res, rej) => { resolve = res; reject = rej; }); const adapter = this._wdAdapter; const names = Object.keys(this._userMetrics); function getAndClearValues() { Promise.all(names.map(name => adapter.executeScript(`return window.${name}`))) .then((values) => { if (values.every(v => typeof v === 'number')) { Promise.all(names.map(name => adapter.executeScript(`delete window.${name}`))) .then((_) => { const map = {}; for (let i = 0, n = names.length; i < n; i++) { map[names[i]] = values[i]; } resolve(map); }, reject); } else { setTimeout(getAndClearValues, 100); } }, reject); } getAndClearValues(); return promise; } /** * Describes the metrics provided by this metric implementation. * (e.g. units, ...) */ describe() { return this._userMetrics; } }; UserMetric.PROVIDERS = [{ provide: UserMetric_1, deps: [Options.USER_METRICS, WebDriverAdapter] }]; UserMetric = UserMetric_1 = __decorate([ Injectable(), __param(0, Inject(Options.USER_METRICS)), __metadata("design:paramtypes", [Object, WebDriverAdapter]) ], UserMetric); export { UserMetric }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcl9tZXRyaWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iZW5jaHByZXNzL3NyYy9tZXRyaWMvdXNlcl9tZXRyaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHdkQsSUFBYSxVQUFVLGtCQUF2QixNQUFhLFVBQVcsU0FBUSxNQUFNO0lBSXBDLFlBQzBDLFlBQXFDLEVBQ25FLFVBQTRCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRmdDLGlCQUFZLEdBQVosWUFBWSxDQUF5QjtRQUNuRSxlQUFVLEdBQVYsVUFBVSxDQUFrQjtJQUV4QyxDQUFDO0lBRUQ7O09BRUc7SUFDTSxZQUFZO1FBQ25CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDTSxVQUFVLENBQUMsT0FBZ0I7UUFDbEMsSUFBSSxPQUE4QixDQUFDO1FBQ25DLElBQUksTUFBNEIsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDOUQsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUNkLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0MsU0FBUyxpQkFBaUI7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN6RSxJQUFJLENBQUMsQ0FBQyxNQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLEVBQUU7b0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDekUsSUFBSSxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUU7d0JBQ2pCLE1BQU0sR0FBRyxHQUF1QixFQUFFLENBQUM7d0JBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQzVDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQzNCO3dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDZixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNBLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDekM7WUFDSCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUNELGlCQUFpQixFQUFFLENBQUM7UUFDcEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNNLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGLENBQUE7QUF6RFEsb0JBQVMsR0FDTSxDQUFDLEVBQUMsT0FBTyxFQUFFLFlBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLEVBQUMsQ0FBRSxDQUFBO0FBRm5GLFVBQVU7SUFEdEIsVUFBVSxFQUFFO0lBTU4sV0FBQSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBOzZDQUNULGdCQUFnQjtHQU43QixVQUFVLENBMER0QjtTQTFEWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBTdGF0aWNQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T3B0aW9uc30gZnJvbSAnLi4vY29tbW9uX29wdGlvbnMnO1xuaW1wb3J0IHtNZXRyaWN9IGZyb20gJy4uL21ldHJpYyc7XG5pbXBvcnQge1dlYkRyaXZlckFkYXB0ZXJ9IGZyb20gJy4uL3dlYl9kcml2ZXJfYWRhcHRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyTWV0cmljIGV4dGVuZHMgTWV0cmljIHtcbiAgc3RhdGljIFBST1ZJREVSUyA9XG4gICAgICA8U3RhdGljUHJvdmlkZXJbXT5be3Byb3ZpZGU6IFVzZXJNZXRyaWMsIGRlcHM6IFtPcHRpb25zLlVTRVJfTUVUUklDUywgV2ViRHJpdmVyQWRhcHRlcl19XTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoT3B0aW9ucy5VU0VSX01FVFJJQ1MpIHByaXZhdGUgX3VzZXJNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICAgIHByaXZhdGUgX3dkQWRhcHRlcjogV2ViRHJpdmVyQWRhcHRlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIG1lYXN1cmluZ1xuICAgKi9cbiAgb3ZlcnJpZGUgYmVnaW5NZWFzdXJlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmRzIG1lYXN1cmluZy5cbiAgICovXG4gIG92ZXJyaWRlIGVuZE1lYXN1cmUocmVzdGFydDogYm9vbGVhbik6IFByb21pc2U8e1trZXk6IHN0cmluZ106IGFueX0+IHtcbiAgICBsZXQgcmVzb2x2ZTogKHJlc3VsdDogYW55KSA9PiB2b2lkO1xuICAgIGxldCByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkO1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx7W2tleTogc3RyaW5nXTogYW55O30+KChyZXMsIHJlaikgPT4ge1xuICAgICAgcmVzb2x2ZSA9IHJlcztcbiAgICAgIHJlamVjdCA9IHJlajtcbiAgICB9KTtcbiAgICBjb25zdCBhZGFwdGVyID0gdGhpcy5fd2RBZGFwdGVyO1xuICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXModGhpcy5fdXNlck1ldHJpY3MpO1xuXG4gICAgZnVuY3Rpb24gZ2V0QW5kQ2xlYXJWYWx1ZXMoKSB7XG4gICAgICBQcm9taXNlLmFsbChuYW1lcy5tYXAobmFtZSA9PiBhZGFwdGVyLmV4ZWN1dGVTY3JpcHQoYHJldHVybiB3aW5kb3cuJHtuYW1lfWApKSlcbiAgICAgICAgICAudGhlbigodmFsdWVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5ldmVyeSh2ID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgICAgICAgUHJvbWlzZS5hbGwobmFtZXMubWFwKG5hbWUgPT4gYWRhcHRlci5leGVjdXRlU2NyaXB0KGBkZWxldGUgd2luZG93LiR7bmFtZX1gKSkpXG4gICAgICAgICAgICAgICAgICAudGhlbigoXzogYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwOiB7W2s6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBuYW1lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICBtYXBbbmFtZXNbaV1dID0gdmFsdWVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWFwKTtcbiAgICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICA8YW55PnNldFRpbWVvdXQoZ2V0QW5kQ2xlYXJWYWx1ZXMsIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICB9XG4gICAgZ2V0QW5kQ2xlYXJWYWx1ZXMoKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNjcmliZXMgdGhlIG1ldHJpY3MgcHJvdmlkZWQgYnkgdGhpcyBtZXRyaWMgaW1wbGVtZW50YXRpb24uXG4gICAqIChlLmcuIHVuaXRzLCAuLi4pXG4gICAqL1xuICBvdmVycmlkZSBkZXNjcmliZSgpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXJNZXRyaWNzO1xuICB9XG59XG4iXX0=