1 # Copyright (c) 2012 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 Facebook's JSGameBench benchmark.""" 6 7 import os 8 9 from telemetry import test 10 from telemetry.core import util 11 from telemetry.page import page_measurement 12 from telemetry.page import page_set 13 14 15 class JsgamebenchMeasurement(page_measurement.PageMeasurement): 16 def MeasurePage(self, _, tab, results): 17 tab.ExecuteJavaScript('UI.call({}, "perftest")') 18 19 js_is_done = 'document.getElementById("perfscore0") != null' 20 def _IsDone(): 21 return bool(tab.EvaluateJavaScript(js_is_done)) 22 util.WaitFor(_IsDone, 1200) 23 24 js_get_results = 'document.getElementById("perfscore0").innerHTML' 25 result = int(tab.EvaluateJavaScript(js_get_results)) 26 results.Add('Score', 'score (bigger is better)', result) 27 28 29 class Jsgamebench(test.Test): 30 """Counts how many animating sprites can move around on the screen at once.""" 31 test = JsgamebenchMeasurement 32 33 def CreatePageSet(self, options): 34 return page_set.PageSet.FromDict({ 35 'archive_data_file': '../data/jsgamebench.json', 36 'pages': [ 37 { 'url': 'http://localhost/' } 38 ] 39 }, os.path.dirname(__file__)) 40