Home | History | Annotate | Download | only in benchmarks
      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
      3 # found in the LICENSE file.
      4 
      5 """Runs Browsermark CSS, DOM, WebGL, JS, resize and page load benchmarks.
      6 
      7 Browsermark benchmark suite have five test groups:
      8 a) CSS group: measures your browsers 2D and 3D performance, and finally executes
      9   CSS Crunch test
     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
     12 c) General group: measures areas like resize and page load times
     13 d) Graphics group: tests browsers Graphics Processing Unit power by measuring
     14   WebGL and Canvas performance
     15 e) Javascript group: executes number crunching by doing selected Array and
     16   String operations
     17 Additionally Browsermark will test your browsers conformance, but conformance
     18 tests are not included in this suite.
     19 """
     20 
     21 import os
     22 
     23 from telemetry import test
     24 from telemetry.page import page_measurement
     25 from telemetry.page import page_set
     26 
     27 
     28 class BrowsermarkMeasurement(page_measurement.PageMeasurement):
     29 
     30   def MeasurePage(self, _, tab, results):
     31     # Select nearest server(North America=1) and start test.
     32     js_start_test =  """
     33         for (var i=0; i < $('#continent a').length; i++) {
     34           if (($('#continent a')[i]).getAttribute('data-id') == '1') {
     35             $('#continent a')[i].click();
     36             $('.start_test.enabled').click();
     37           }
     38         }
     39         """
     40     tab.ExecuteJavaScript(js_start_test)
     41     tab.WaitForJavaScriptExpression(
     42       'window.location.pathname.indexOf("results") != -1', 600)
     43     result = int(tab.EvaluateJavaScript(
     44         'document.getElementsByClassName("score")[0].innerHTML'))
     45     results.Add('Score', 'score', result)
     46 
     47 
     48 class Browsermark(test.Test):
     49   """Browsermark suite tests CSS, DOM, resize, page load, WebGL and JS."""
     50   test = BrowsermarkMeasurement
     51   def CreatePageSet(self, options):
     52     return page_set.PageSet.FromDict({
     53         'archive_data_file': '../page_sets/data/browsermark.json',
     54         'make_javascript_deterministic': False,
     55         'pages': [
     56           { 'url':
     57               'http://browsermark.rightware.com/tests/'}
     58            ]
     59         }, os.path.abspath(__file__))
     60 
     61