@@ -7,19 +7,53 @@ module.exports = {
7
7
} ;
8
8
9
9
function runClickBenchmark ( config ) {
10
- var url = encodeURI ( config . url + '?' + config . params . map ( function ( param ) {
11
- return param . name + '=' + param . value ;
12
- } ) . join ( '&' ) ) ;
13
- browser . get ( url ) ;
14
- var buttons = config . buttons . map ( function ( selector ) {
15
- return $ ( selector ) ;
10
+ var globalParams = browser . params ;
11
+ getScaleFactor ( globalParams . benchmark . scaling ) . then ( function ( scaleFactor ) {
12
+ var params = config . params . map ( function ( param ) {
13
+ return {
14
+ name : param . name , value : applyScaleFactor ( param . value , scaleFactor , param . scale )
15
+ }
16
+ } ) ;
17
+ var benchmarkConfig = Object . create ( globalParams . benchmark ) ;
18
+ benchmarkConfig . id = globalParams . lang + '.' + config . id ;
19
+ benchmarkConfig . params = params ;
20
+ benchmarkConfig . scaleFactor = scaleFactor ;
21
+
22
+ var url = encodeURI ( config . url + '?' + params . map ( function ( param ) {
23
+ return param . name + '=' + param . value ;
24
+ } ) . join ( '&' ) ) ;
25
+ browser . get ( url ) ;
26
+ var buttons = config . buttons . map ( function ( selector ) {
27
+ return $ ( selector ) ;
28
+ } ) ;
29
+ benchpress . runBenchmark ( benchmarkConfig , function ( ) {
30
+ buttons . forEach ( function ( button ) {
31
+ button . click ( ) ;
32
+ } ) ;
33
+ } ) ;
16
34
} ) ;
17
- var benchmarkConfig = Object . create ( browser . params . benchmark ) ;
18
- benchmarkConfig . id = browser . params . lang + '.' + config . id ;
19
- benchmarkConfig . params = config . params ;
20
- benchpress . runBenchmark ( benchmarkConfig , function ( ) {
21
- buttons . forEach ( function ( button ) {
22
- button . click ( ) ;
35
+ }
36
+
37
+ function getScaleFactor ( possibleScalings ) {
38
+ return browser . executeScript ( 'return navigator.userAgent' ) . then ( function ( userAgent ) {
39
+ var scaleFactor = 1 ;
40
+ possibleScalings . forEach ( function ( entry ) {
41
+ if ( userAgent . match ( entry . userAgent ) ) {
42
+ scaleFactor = entry . value ;
43
+ }
23
44
} ) ;
45
+ return scaleFactor ;
24
46
} ) ;
47
+ }
48
+
49
+ function applyScaleFactor ( value , scaleFactor , method ) {
50
+ if ( method === 'log2' ) {
51
+ return value + Math . log2 ( scaleFactor ) ;
52
+ } else if ( method === 'sqrt' ) {
53
+ return value * Math . sqrt ( scaleFactor ) ;
54
+ } else if ( method === 'linear' ) {
55
+ return value * scaleFactor ;
56
+ } else {
57
+ return value ;
58
+ }
25
59
}
0 commit comments