75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. 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
 | |
|  */
 | |
| 
 | |
| export {verifyNoBrowserErrors} from './e2e_util';
 | |
| 
 | |
| var benchpress = (global as any /** TODO #9100 */)['benchpress'];
 | |
| var bind = benchpress.bind;
 | |
| var Options = benchpress.Options;
 | |
| 
 | |
| export function runClickBenchmark(config: any /** TODO #9100 */) {
 | |
|   browser.ignoreSynchronization = !config.waitForAngular2;
 | |
|   var buttons =
 | |
|       config.buttons.map(function(selector: any /** TODO #9100 */) { return $(selector); });
 | |
|   config.work = function() {
 | |
|     buttons.forEach(function(button: any /** TODO #9100 */) { button.click(); });
 | |
|   };
 | |
|   return runBenchmark(config);
 | |
| }
 | |
| 
 | |
| export function runBenchmark(config: any /** TODO #9100 */) {
 | |
|   return getScaleFactor(browser.params.benchmark.scaling).then(function(scaleFactor) {
 | |
|     var description = {};
 | |
|     var urlParams: any[] /** TODO #9100 */ = [];
 | |
|     if (config.params) {
 | |
|       config.params.forEach(function(param: any /** TODO #9100 */) {
 | |
|         var name = param.name;
 | |
|         var value = applyScaleFactor(param.value, scaleFactor, param.scale);
 | |
|         urlParams.push(name + '=' + value);
 | |
|         (description as any /** TODO #9100 */)[name] = value;
 | |
|       });
 | |
|     }
 | |
|     var url = encodeURI(config.url + '?' + urlParams.join('&'));
 | |
|     return browser.get(url).then(function() {
 | |
|       return (global as any /** TODO #9100 */)['benchpressRunner'].sample({
 | |
|         id: config.id,
 | |
|         execute: config.work,
 | |
|         prepare: config.prepare,
 | |
|         microMetrics: config.microMetrics,
 | |
|         providers: [{provide: Options.SAMPLE_DESCRIPTION, useValue: description}]
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| }
 | |
| 
 | |
| function getScaleFactor(possibleScalings: any /** TODO #9100 */) {
 | |
|   return browser.executeScript('return navigator.userAgent').then(function(userAgent: string) {
 | |
|     var scaleFactor = 1;
 | |
|     possibleScalings.forEach(function(entry: any /** TODO #9100 */) {
 | |
|       if (userAgent.match(entry.userAgent)) {
 | |
|         scaleFactor = entry.value;
 | |
|       }
 | |
|     });
 | |
|     return scaleFactor;
 | |
|   });
 | |
| }
 | |
| 
 | |
| function applyScaleFactor(
 | |
|     value: any /** TODO #9100 */, scaleFactor: any /** TODO #9100 */,
 | |
|     method: any /** TODO #9100 */) {
 | |
|   if (method === 'log2') {
 | |
|     return value + Math.log(scaleFactor) / Math.LN2;
 | |
|   } else if (method === 'sqrt') {
 | |
|     return value * Math.sqrt(scaleFactor);
 | |
|   } else if (method === 'linear') {
 | |
|     return value * scaleFactor;
 | |
|   } else {
 | |
|     return value;
 | |
|   }
 | |
| }
 |