1
1
// load traceur runtime as our tests are written in es6
2
2
require ( 'traceur/bin/traceur-runtime.js' ) ;
3
3
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
8
29
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
+ } ;
10
67
11
68
var config = exports . config = {
12
69
// Disable waiting for Angular as we don't have an integration layer yet...
@@ -23,11 +80,31 @@ var config = exports.config = {
23
80
}
24
81
} ,
25
82
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
+
26
103
framework : 'jasmine2' ,
27
104
28
105
jasmineNodeOpts : {
29
106
showColors : true ,
30
- defaultTimeoutInterval : 30000
107
+ defaultTimeoutInterval : argv . benchpress ? 80000 : 30000
31
108
} ,
32
109
params : {
33
110
benchmark : {
@@ -39,6 +116,11 @@ var config = exports.config = {
39
116
} ;
40
117
41
118
exports . 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
+
42
124
// TODO(tbosch): add cloud reporter again (only when !options.test)
43
125
// var cloudReporterConfig;
44
126
// if (process.env.CLOUD_SECRET_PATH) {
@@ -59,67 +141,19 @@ exports.createBenchpressRunner = function(options) {
59
141
benchpress . bind ( benchpress . WebDriverAdapter ) . toFactory (
60
142
function ( ) { return new SeleniumWebDriverAdapter ( global . browser ) ; } , [ ]
61
143
) ,
62
- benchpress . bind ( benchpress . Options . FORCE_GC ) . toValue ( options . forceGc ) ,
144
+ benchpress . bind ( benchpress . Options . FORCE_GC ) . toValue ( argv [ 'force-gc' ] ) ,
63
145
benchpress . bind ( benchpress . Options . DEFAULT_DESCRIPTION ) . toValue ( {
64
146
'lang' : options . lang ,
65
147
'runId' : runId
66
148
} )
67
149
] ;
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 {
69
154
bindings . push ( benchpress . SizeValidator . BINDINGS ) ;
70
155
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 ) ) ;
74
156
}
75
157
76
158
global . benchpressRunner = new benchpress . Runner ( bindings ) ;
77
159
}
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