OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Runs Browsermark CSS, DOM, WebGL, JS, resize and page load benchmarks. | 5 """Runs Browsermark CSS, DOM, WebGL, JS, resize and page load benchmarks. |
6 | 6 |
7 Browsermark benchmark suite have five test groups: | 7 Browsermark benchmark suite have five test groups: |
8 a) CSS group: measures your browsers 2D and 3D performance, and finally executes | 8 a) CSS group: measures your browsers 2D and 3D performance, and finally executes |
9 CSS Crunch test | 9 CSS Crunch test |
10 b) DOM group: measures variety of areas, like how well your browser traverse in | 10 b) DOM group: measures variety of areas, like how well your browser traverse in |
11 Document Object Model Tree or how fast your browser can create dynamic content | 11 Document Object Model Tree or how fast your browser can create dynamic content |
12 c) General group: measures areas like resize and page load times | 12 c) General group: measures areas like resize and page load times |
13 d) Graphics group: tests browsers Graphics Processing Unit power by measuring | 13 d) Graphics group: tests browsers Graphics Processing Unit power by measuring |
14 WebGL and Canvas performance | 14 WebGL and Canvas performance |
15 e) Javascript group: executes number crunching by doing selected Array and | 15 e) Javascript group: executes number crunching by doing selected Array and |
16 String operations | 16 String operations |
17 Additionally Browsermark will test your browsers conformance, but conformance | 17 Additionally Browsermark will test your browsers conformance, but conformance |
18 tests are not included in this suite. | 18 tests are not included in this suite. |
19 """ | 19 """ |
20 | 20 |
21 import os | 21 import os |
22 | 22 |
| 23 from measurements import PageTestMeasurement |
23 from telemetry import benchmark | 24 from telemetry import benchmark |
24 from telemetry.page import page_set | 25 from telemetry.page import page_set |
25 from telemetry.page import page_test | |
26 from telemetry.value import scalar | 26 from telemetry.value import scalar |
27 | 27 |
28 class _BrowsermarkMeasurement(page_test.PageTest): | 28 class _BrowsermarkMeasurement(PageTestMeasurement): |
29 | 29 |
30 def ValidateAndMeasurePage(self, _, tab, results): | 30 def ValidateAndMeasurePage(self, page, tab, results): |
31 # Select nearest server(North America=1) and start test. | 31 # Select nearest server(North America=1) and start test. |
32 js_start_test = """ | 32 js_start_test = """ |
33 for (var i=0; i < $('#continent a').length; i++) { | 33 for (var i=0; i < $('#continent a').length; i++) { |
34 if (($('#continent a')[i]).getAttribute('data-id') == '1') { | 34 if (($('#continent a')[i]).getAttribute('data-id') == '1') { |
35 $('#continent a')[i].click(); | 35 $('#continent a')[i].click(); |
36 $('.start_test.enabled').click(); | 36 $('.start_test.enabled').click(); |
37 } | 37 } |
38 } | 38 } |
39 """ | 39 """ |
40 tab.ExecuteJavaScript(js_start_test) | 40 tab.ExecuteJavaScript(js_start_test) |
41 tab.WaitForJavaScriptExpression( | 41 tab.WaitForJavaScriptExpression( |
42 'window.location.pathname.indexOf("results") != -1', 600) | 42 'window.location.pathname.indexOf("results") != -1', 600) |
43 result = int(tab.EvaluateJavaScript( | 43 result = int(tab.EvaluateJavaScript( |
44 'document.getElementsByClassName("score")[0].innerHTML')) | 44 'document.getElementsByClassName("score")[0].innerHTML')) |
45 results.AddValue( | 45 results.AddValue( |
46 scalar.ScalarValue(results.current_page, 'Score', 'score', result)) | 46 scalar.ScalarValue(results.current_page, 'Score', 'score', result)) |
47 | 47 |
| 48 super(_BrowsermarkMeasurement, self).ValidateAndMeasurePage( |
| 49 page, tab, results) |
| 50 |
48 | 51 |
49 @benchmark.Disabled | 52 @benchmark.Disabled |
50 class Browsermark(benchmark.Benchmark): | 53 class Browsermark(benchmark.Benchmark): |
51 """Browsermark suite tests CSS, DOM, resize, page load, WebGL and JS.""" | 54 """Browsermark suite tests CSS, DOM, resize, page load, WebGL and JS.""" |
52 test = _BrowsermarkMeasurement | 55 test = _BrowsermarkMeasurement |
53 def CreatePageSet(self, options): | 56 def CreatePageSet(self, options): |
54 ps = page_set.PageSet( | 57 ps = page_set.PageSet( |
55 file_path=os.path.abspath(__file__), | 58 file_path=os.path.abspath(__file__), |
56 archive_data_file='../page_sets/data/browsermark.json', | 59 archive_data_file='../page_sets/data/browsermark.json', |
57 make_javascript_deterministic=False) | 60 make_javascript_deterministic=False) |
58 ps.AddPageWithDefaultRunNavigate('http://browsermark.rightware.com/tests/') | 61 ps.AddPageWithDefaultRunNavigate('http://browsermark.rightware.com/tests/') |
59 return ps | 62 return ps |
OLD | NEW |