@@ -7,19 +7,53 @@ module.exports = {
77} ;
88
99function 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+ } ) ;
1634 } ) ;
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+ }
2344 } ) ;
45+ return scaleFactor ;
2446 } ) ;
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+ }
2559}
0 commit comments