94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.6 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
 | |
|  */
 | |
| 
 | |
| import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util';
 | |
| import {$, browser} from 'protractor';
 | |
| 
 | |
| import {Benchmark, Benchmarks, CreateBtn, DestroyBtn, DetectChangesBtn, RootEl} from './tree_data';
 | |
| 
 | |
| describe('tree benchmark perf', () => {
 | |
| 
 | |
|   let _oldRootEl: any;
 | |
|   beforeEach(() => _oldRootEl = browser.rootEl);
 | |
| 
 | |
|   afterEach(() => {
 | |
|     browser.rootEl = _oldRootEl;
 | |
|     verifyNoBrowserErrors();
 | |
|   });
 | |
| 
 | |
|   Benchmarks.forEach(benchmark => {
 | |
|     describe(benchmark.id, () => {
 | |
|       // This is actually a destroyOnly benchmark
 | |
|       it('should work for createOnly', done => {
 | |
|         runTreeBenchmark({
 | |
|           id: 'createOnly',
 | |
|           benchmark,
 | |
|           prepare: () => $(CreateBtn).click(),
 | |
|           work: () => $(DestroyBtn).click()
 | |
|         }).then(done, done.fail);
 | |
|       });
 | |
| 
 | |
|       it('should work for createOnlyForReal', done => {
 | |
|         runTreeBenchmark({
 | |
|           id: 'createOnlyForReal',
 | |
|           benchmark,
 | |
|           prepare: () => $(DestroyBtn).click(),
 | |
|           work: () => $(CreateBtn).click()
 | |
|         }).then(done, done.fail);
 | |
|       });
 | |
| 
 | |
|       it('should work for createDestroy', done => {
 | |
|         runTreeBenchmark({
 | |
|           id: 'createDestroy',
 | |
|           benchmark,
 | |
|           work: () => {
 | |
|             $(DestroyBtn).click();
 | |
|             $(CreateBtn).click();
 | |
|           }
 | |
|         }).then(done, done.fail);
 | |
|       });
 | |
| 
 | |
|       it('should work for update', done => {
 | |
|         runTreeBenchmark({id: 'update', benchmark, work: () => $(CreateBtn).click()})
 | |
|             .then(done, done.fail);
 | |
|       });
 | |
| 
 | |
|       if (benchmark.buttons.indexOf(DetectChangesBtn) !== -1) {
 | |
|         it('should work for detectChanges', done => {
 | |
|           runTreeBenchmark({
 | |
|             id: 'detectChanges',
 | |
|             benchmark,
 | |
|             work: () => $(DetectChangesBtn).click(),
 | |
|             setup: () => $(DestroyBtn).click()
 | |
|           }).then(done, done.fail);
 | |
|         });
 | |
|       }
 | |
| 
 | |
|     });
 | |
|   });
 | |
| });
 | |
| 
 | |
| function runTreeBenchmark({id, benchmark, prepare, setup, work}: {
 | |
|   id: string; benchmark: Benchmark, prepare ? () : void; setup ? () : void; work(): void;
 | |
| }) {
 | |
|   let params = [{name: 'depth', value: 11}];
 | |
|   if (benchmark.extraParams) {
 | |
|     params = params.concat(benchmark.extraParams);
 | |
|   }
 | |
|   browser.rootEl = RootEl;
 | |
|   return runBenchmark({
 | |
|     id: `${benchmark.id}.${id}`,
 | |
|     url: benchmark.url,
 | |
|     ignoreBrowserSynchronization: benchmark.ignoreBrowserSynchronization,
 | |
|     params: params,
 | |
|     work: work,
 | |
|     prepare: prepare,
 | |
|     setup: setup
 | |
|   });
 | |
| }
 |