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 """Impact HTML5 Gaming benchmark.
      6 
      7 Tests one very specific use case: smooth running games rendered with the
      8 <canvas> element. The score for the HTML5-Benchmark takes the total time the
      9 browser spent rendering frames (formula is 1000000/(sqrt(totalTime) + lagTime *
     10 0.1)). The benchmark automatically runs at a reasonable screen size. Final
     11 score is a indicator for the browser's ability to smoothly run HTML5 games."""
     12 
     13 import os
     14 
     15 from telemetry import test
     16 from telemetry.page import page_measurement
     17 from telemetry.page import page_set
     18 
     19 class _HTML5GamingMeasurement(page_measurement.PageMeasurement):
     20   def MeasurePage(self, _, tab, results):
     21     tab.ExecuteJavaScript('benchmark();')
     22     # Default value of score element is 87485, its value is updated with actual
     23     # score when test finish.
     24     tab.WaitForJavaScriptExpression(
     25         'document.getElementById("score").innerHTML != "87485"', 200)
     26     result = int(tab.EvaluateJavaScript(
     27         'document.getElementById("score").innerHTML'))
     28     results.Add('Score', 'score', result)
     29 
     30 
     31 class HTML5Gaming(test.Test):
     32   """Imapct HTML5 smooth running games benchmark suite."""
     33   test = _HTML5GamingMeasurement
     34   def CreatePageSet(self, options):
     35     ps = page_set.PageSet(
     36       file_path=os.path.abspath(__file__),
     37       archive_data_file='../page_sets/data/html5gaming.json',
     38       make_javascript_deterministic=False)
     39     ps.AddPageWithDefaultRunNavigate('http://html5-benchmark.com/')
     40     return ps
     41