@angular/benchpress
Version:
Benchpress - a framework for e2e performance tests
74 lines • 8.28 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
*/
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=