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.
5 """Impact HTML5 Gaming benchmark.
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."""
15 from telemetry
import benchmark
16 from telemetry
.page
import page_set
17 from telemetry
.page
import page_test
18 from telemetry
.value
import scalar
21 class _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'))
31 scalar
.ScalarValue(results
.current_page
, 'Score', 'score', result
))
36 class 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/')