The new view engine allows our codegen to produce less code, as it can interpret view definitions during runtime. The view engine is not feature complete yet, but already allows to implement a tree benchmark based on it. Part of #14013
132 lines
3.7 KiB
TypeScript
132 lines
3.7 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 {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util';
|
|
import {$} from 'protractor';
|
|
|
|
describe('tree benchmark spec', () => {
|
|
|
|
afterEach(verifyNoBrowserErrors);
|
|
|
|
it('should work for ng2', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/ng2/index.html',
|
|
});
|
|
});
|
|
|
|
it('should work for ng2 detect changes', () => {
|
|
let params = [{name: 'depth', value: 4}];
|
|
openBrowser({url: 'all/benchmarks/src/tree/ng2/index.html', params});
|
|
$('#detectChanges').click();
|
|
expect($('#numberOfChecks').getText()).toContain('10');
|
|
});
|
|
|
|
it('should work for ng2 next', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/ng2_next/index.html',
|
|
ignoreBrowserSynchronization: true,
|
|
// Can't use bundles as we use non exported code
|
|
extraParams: [{name: 'bundles', value: false}]
|
|
});
|
|
});
|
|
|
|
it('should work for ng2 next detect changes', () => {
|
|
let params = [
|
|
{name: 'depth', value: 4},
|
|
// Can't use bundles as we use non exported code
|
|
{name: 'bundles', value: false}
|
|
];
|
|
openBrowser({
|
|
url: 'all/benchmarks/src/tree/ng2_next/index.html',
|
|
ignoreBrowserSynchronization: true, params
|
|
});
|
|
$('#detectChanges').click();
|
|
expect($('#numberOfChecks').getText()).toContain('10');
|
|
});
|
|
|
|
it('should work for ng2 ftl', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/ng2_ftl/index.html',
|
|
// Can't use bundles as we use AoT generated code
|
|
// which relies on deep imports
|
|
extraParams: [{name: 'bundles', value: false}]
|
|
});
|
|
});
|
|
|
|
it('should work for ng2 static', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/ng2_static/index.html',
|
|
});
|
|
});
|
|
|
|
it('should work for ng2 static ftl', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/ng2_static_ftl/index.html',
|
|
// Can't use bundles as we use AoT generated code
|
|
// which relies on deep imports
|
|
extraParams: [{name: 'bundles', value: false}]
|
|
});
|
|
});
|
|
|
|
it('should work for ng2 switch', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/ng2_switch/index.html',
|
|
});
|
|
});
|
|
|
|
it('should work for the baseline', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/baseline/index.html',
|
|
ignoreBrowserSynchronization: true,
|
|
});
|
|
});
|
|
|
|
it('should work for incremental dom', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/incremental_dom/index.html',
|
|
ignoreBrowserSynchronization: true,
|
|
});
|
|
});
|
|
|
|
it('should work for polymer binary tree', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/polymer/index.html',
|
|
ignoreBrowserSynchronization: true,
|
|
});
|
|
});
|
|
|
|
it('should work for polymer leaves', () => {
|
|
testTreeBenchmark({
|
|
url: 'all/benchmarks/src/tree/polymer_leaves/index.html',
|
|
ignoreBrowserSynchronization: true,
|
|
});
|
|
});
|
|
|
|
function testTreeBenchmark(openConfig: {
|
|
url: string,
|
|
ignoreBrowserSynchronization?: boolean,
|
|
extraParams?: {name: string, value: any}[]
|
|
}) {
|
|
let params = [{name: 'depth', value: 4}];
|
|
if (openConfig.extraParams) {
|
|
params = params.concat(openConfig.extraParams);
|
|
}
|
|
openBrowser({
|
|
url: openConfig.url,
|
|
ignoreBrowserSynchronization: openConfig.ignoreBrowserSynchronization,
|
|
params: params,
|
|
});
|
|
$('#createDom').click();
|
|
expect($('#root').getText()).toContain('0');
|
|
$('#createDom').click();
|
|
expect($('#root').getText()).toContain('A');
|
|
$('#destroyDom').click();
|
|
expect($('#root').getText()).toEqual('');
|
|
}
|
|
});
|