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;
 | 
						|
  }
 | 
						|
}
 |