11// load traceur runtime as our tests are written in es6
22require ( 'traceur/bin/traceur-runtime.js' ) ;
33
4- var nodeUuid = require ( 'node-uuid' ) ;
5- var benchpress = require ( './dist/js/cjs/benchpress/benchpress' ) ;
6- var SeleniumWebDriverAdapter = require ( './dist/js/cjs/benchpress/src/webdriver/selenium_webdriver_adapter' ) . SeleniumWebDriverAdapter ;
7- var cmdArgs = require ( 'minimist' ) ( process . argv ) ;
4+ var argv = require ( 'yargs' )
5+ . usage ( 'Angular e2e/perf test options.' )
6+ . options ( {
7+ 'sample-size' : {
8+ describe : 'sample size' ,
9+ default : 20 ,
10+ type : 'boolean'
11+ } ,
12+ 'force-gc' : {
13+ describe : 'force gc' ,
14+ default : false ,
15+ type : 'boolean'
16+ } ,
17+ 'benchmark' : {
18+ describe : 'whether to run the benchmarks' ,
19+ default : false
20+ } ,
21+ 'browsers' : {
22+ describe : 'preconfigured browsers that should be used' ,
23+ default : 'ChromeDesktop'
24+ }
25+ } )
26+ . help ( 'ng-help' )
27+ . wrap ( 40 )
28+ . argv
829
9- var cmdLineBrowsers = cmdArgs . browsers ? cmdArgs . browsers . split ( ',' ) : [ ] ;
30+ var browsers = argv [ 'browsers' ] . split ( ',' ) ;
31+
32+ var BROWSER_CAPS = {
33+ Dartium : {
34+ name : 'Dartium' ,
35+ browserName : 'chrome' ,
36+ chromeOptions : {
37+ 'binary' : process . env . DARTIUM ,
38+ 'args' : [ '--js-flags=--expose-gc' ]
39+ } ,
40+ loggingPrefs : {
41+ performance : 'ALL' ,
42+ browser : 'ALL'
43+ }
44+ } ,
45+ ChromeDesktop : {
46+ browserName : 'chrome' ,
47+ chromeOptions : {
48+ 'args' : [ '--js-flags=--expose-gc' ]
49+ } ,
50+ loggingPrefs : {
51+ performance : 'ALL' ,
52+ browser : 'ALL'
53+ }
54+ } ,
55+ ChromeAndroid : {
56+ browserName : 'chrome' ,
57+ chromeOptions : {
58+ androidPackage : 'com.android.chrome' ,
59+ 'args' : [ '--js-flags=--expose-gc' ]
60+ } ,
61+ loggingPrefs : {
62+ performance : 'ALL' ,
63+ browser : 'ALL'
64+ }
65+ }
66+ } ;
1067
1168var config = exports . config = {
1269 // Disable waiting for Angular as we don't have an integration layer yet...
@@ -23,11 +80,31 @@ var config = exports.config = {
2380 }
2481 } ,
2582
83+ specs : argv [ 'benchmark' ] ? [
84+ 'dist/js/cjs/**/e2e_test/**/*_perf.js'
85+ ] : [
86+ 'dist/js/cjs/**/e2e_test/**/*_spec.js' ,
87+ 'dist/js/cjs/**/e2e_test/**/*_perf.js'
88+ ] ,
89+
90+ exclude : [
91+ 'dist/js/cjs/**/node_modules/**' ,
92+ ] ,
93+
94+ multiCapabilities : browsers . map ( function ( browserName ) {
95+ var caps = BROWSER_CAPS [ browserName ] ;
96+ console . log ( 'Testing against' , browserName ) ;
97+ if ( ! caps ) {
98+ throw new Error ( 'Not configured browser name: ' + browserName ) ;
99+ }
100+ return caps ;
101+ } ) ,
102+
26103 framework : 'jasmine2' ,
27104
28105 jasmineNodeOpts : {
29106 showColors : true ,
30- defaultTimeoutInterval : 30000
107+ defaultTimeoutInterval : argv . benchpress ? 80000 : 30000
31108 } ,
32109 params : {
33110 benchmark : {
@@ -39,6 +116,11 @@ var config = exports.config = {
39116} ;
40117
41118exports . createBenchpressRunner = function ( options ) {
119+ var nodeUuid = require ( 'node-uuid' ) ;
120+ var benchpress = require ( './dist/js/cjs/benchpress/benchpress' ) ;
121+ var SeleniumWebDriverAdapter =
122+ require ( './dist/js/cjs/benchpress/src/webdriver/selenium_webdriver_adapter' ) . SeleniumWebDriverAdapter ;
123+
42124 // TODO(tbosch): add cloud reporter again (only when !options.test)
43125 // var cloudReporterConfig;
44126 // if (process.env.CLOUD_SECRET_PATH) {
@@ -59,67 +141,19 @@ exports.createBenchpressRunner = function(options) {
59141 benchpress . bind ( benchpress . WebDriverAdapter ) . toFactory (
60142 function ( ) { return new SeleniumWebDriverAdapter ( global . browser ) ; } , [ ]
61143 ) ,
62- benchpress . bind ( benchpress . Options . FORCE_GC ) . toValue ( options . forceGc ) ,
144+ benchpress . bind ( benchpress . Options . FORCE_GC ) . toValue ( argv [ 'force-gc' ] ) ,
63145 benchpress . bind ( benchpress . Options . DEFAULT_DESCRIPTION ) . toValue ( {
64146 'lang' : options . lang ,
65147 'runId' : runId
66148 } )
67149 ] ;
68- if ( options . test ) {
150+ if ( argv [ 'benchmark' ] ) {
151+ bindings . push ( benchpress . RegressionSlopeValidator . BINDINGS ) ;
152+ bindings . push ( benchpress . bind ( benchpress . RegressionSlopeValidator . SAMPLE_SIZE ) . toValue ( argv [ 'sample-size' ] ) ) ;
153+ } else {
69154 bindings . push ( benchpress . SizeValidator . BINDINGS ) ;
70155 bindings . push ( benchpress . bind ( benchpress . SizeValidator . SAMPLE_SIZE ) . toValue ( 1 ) ) ;
71- } else {
72- bindings . push ( benchpress . RegressionSlopeValidator . BINDINGS ) ;
73- bindings . push ( benchpress . bind ( benchpress . RegressionSlopeValidator . SAMPLE_SIZE ) . toValue ( options . sampleSize ) ) ;
74156 }
75157
76158 global . benchpressRunner = new benchpress . Runner ( bindings ) ;
77159}
78-
79-
80- var POSSIBLE_CAPS = {
81- Dartium : {
82- name : 'Dartium' ,
83- browserName : 'chrome' ,
84- chromeOptions : {
85- 'binary' : process . env . DARTIUM ,
86- 'args' : [ '--js-flags=--expose-gc' ]
87- } ,
88- loggingPrefs : {
89- performance : 'ALL' ,
90- browser : 'ALL'
91- }
92- } ,
93- ChromeDesktop : {
94- browserName : 'chrome' ,
95- chromeOptions : {
96- 'args' : [ '--js-flags=--expose-gc' ]
97- } ,
98- loggingPrefs : {
99- performance : 'ALL' ,
100- browser : 'ALL'
101- }
102- } ,
103- ChromeAndroid : {
104- browserName : 'chrome' ,
105- chromeOptions : {
106- androidPackage : 'com.android.chrome' ,
107- 'args' : [ '--js-flags=--expose-gc' ]
108- } ,
109- loggingPrefs : {
110- performance : 'ALL' ,
111- browser : 'ALL'
112- }
113- }
114- } ;
115- if ( cmdLineBrowsers . length ) {
116- config . multiCapabilities = cmdLineBrowsers . map ( function ( browserName ) {
117- var caps = POSSIBLE_CAPS [ browserName ] ;
118- if ( ! caps ) {
119- throw new Error ( 'Not configured browser name: ' + browserName ) ;
120- }
121- return caps ;
122- } ) ;
123- } else {
124- config . multiCapabilities = [ POSSIBLE_CAPS . ChromeDesktop ] ;
125- }
0 commit comments