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