90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			90 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
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface Worker {
							 | 
						||
| 
								 | 
							
								  id: string;
							 | 
						||
| 
								 | 
							
								  prepare?(): void;
							 | 
						||
| 
								 | 
							
								  work(): void;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const CreateOnlyWorker: Worker = {
							 | 
						||
| 
								 | 
							
								  id: 'createOnly',
							 | 
						||
| 
								 | 
							
								  prepare: () => $('#destroyDom').click(),
							 | 
						||
| 
								 | 
							
								  work: () => $('#createDom').click()
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const CreateAndDestroyWorker: Worker = {
							 | 
						||
| 
								 | 
							
								  id: 'createDestroy',
							 | 
						||
| 
								 | 
							
								  work: () => {
							 | 
						||
| 
								 | 
							
								    $('#createDom').click();
							 | 
						||
| 
								 | 
							
								    $('#destroyDom').click();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const UpdateWorker: Worker = {
							 | 
						||
| 
								 | 
							
								  id: 'update',
							 | 
						||
| 
								 | 
							
								  work: () => $('#createDom').click()
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('largetable benchmark perf', () => {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  afterEach(verifyNoBrowserErrors);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  [CreateOnlyWorker, CreateAndDestroyWorker, UpdateWorker].forEach((worker) => {
							 | 
						||
| 
								 | 
							
								    describe(worker.id, () => {
							 | 
						||
| 
								 | 
							
								      it('should run for ng2', (done) => {
							 | 
						||
| 
								 | 
							
								        runTableBenchmark({
							 | 
						||
| 
								 | 
							
								          id: `largeTable.ng2.${worker.id}`,
							 | 
						||
| 
								 | 
							
								          url: 'all/benchmarks/src/largetable/ng2/index.html',
							 | 
						||
| 
								 | 
							
								          worker: worker
							 | 
						||
| 
								 | 
							
								        }).then(done, done.fail);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should run for ng2 with ngSwitch', (done) => {
							 | 
						||
| 
								 | 
							
								        runTableBenchmark({
							 | 
						||
| 
								 | 
							
								          id: `largeTable.ng2_switch.${worker.id}`,
							 | 
						||
| 
								 | 
							
								          url: 'all/benchmarks/src/largetable/ng2_switch/index.html',
							 | 
						||
| 
								 | 
							
								          worker: worker
							 | 
						||
| 
								 | 
							
								        }).then(done, done.fail);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should run for the baseline', (done) => {
							 | 
						||
| 
								 | 
							
								        runTableBenchmark({
							 | 
						||
| 
								 | 
							
								          id: `largeTable.baseline.${worker.id}`,
							 | 
						||
| 
								 | 
							
								          url: 'all/benchmarks/src/largetable/baseline/index.html',
							 | 
						||
| 
								 | 
							
								          ignoreBrowserSynchronization: true,
							 | 
						||
| 
								 | 
							
								          worker: worker
							 | 
						||
| 
								 | 
							
								        }).then(done, done.fail);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should run for incremental-dom', (done) => {
							 | 
						||
| 
								 | 
							
								        runTableBenchmark({
							 | 
						||
| 
								 | 
							
								          id: `largeTable.incremental_dom.${worker.id}`,
							 | 
						||
| 
								 | 
							
								          url: 'all/benchmarks/src/largetable/incremental_dom/index.html',
							 | 
						||
| 
								 | 
							
								          ignoreBrowserSynchronization: true,
							 | 
						||
| 
								 | 
							
								          worker: worker
							 | 
						||
| 
								 | 
							
								        }).then(done, done.fail);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function runTableBenchmark(
							 | 
						||
| 
								 | 
							
								      config: {id: string, url: string, ignoreBrowserSynchronization?: boolean, worker: Worker}) {
							 | 
						||
| 
								 | 
							
								    return runBenchmark({
							 | 
						||
| 
								 | 
							
								      id: config.id,
							 | 
						||
| 
								 | 
							
								      url: config.url,
							 | 
						||
| 
								 | 
							
								      ignoreBrowserSynchronization: config.ignoreBrowserSynchronization,
							 | 
						||
| 
								 | 
							
								      params: [{name: 'cols', value: 40}, {name: 'rows', value: 200}],
							 | 
						||
| 
								 | 
							
								      prepare: config.worker.prepare,
							 | 
						||
| 
								 | 
							
								      work: config.worker.work
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 |