Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: tools/telemetry/examples/gpu_mapsgl_endurance_browsertest.py

Issue 11360172: Added Tab.SnapshotContent and MapsGL example to telemetry (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5 import os
6 import sys
7 import time
8 import json
9
10 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
11 import telemetry
12
13 def ReadTestExpectations(json_test_expectations_path):
14 f = open(json_test_expectations_path, 'r')
15 json_contents = json.load(f)
16 return json_contents
17
18 def CompareToExpectedResults(snapshot, expectations):
19 result = True
20 for expectation in expectations:
21 location = expectation["location"]
22 iter_result = snapshot.CheckPixelColor(location[0], location[1],
23 expectation["color"], expectation["tolerance"])
24 if not iter_result:
25 print("FAILURE: Expected", location, "to be", expectation["color"],
26 "but got", snapshot.GetPixel(location[0], location[1]))
27 result &= iter_result
28 return result
29
30 def RunSingleTest(browser,
31 url,
32 json_test_expectations_filename,
33 failure_filename_prefix):
34 expectations = ReadTestExpectations(json_test_expectations_filename)
35
36 #TODO: BringBrowserWindowToFront?
Ken Russell (switch to Gerrit) 2012/11/09 20:26:28 TODOs require a contact person. http://google-styl
37 #TODO: browser.window.SetBounds?
38
39 with browser.ConnectToNthTab(0) as tab:
40 tab.page.Navigate(url)
41 time.sleep(2) # Why is this needed?
42 tab.WaitForDocumentReadyStateToBeComplete()
43
44 if tab.runtime.Evaluate('window.chrome.gpuBenchmarking === undefined'):
45 print 'Browser does not support gpu benchmarks API.'
46 return 255
47
48 if tab.runtime.Evaluate(
49 'window.chrome.gpuBenchmarking.windowSnapshot === undefined'):
50 print 'Browser does not support window snapshot API.'
51 return 255
52
53 # Mock up the message queue functionality used by the mapping test
Ken Russell (switch to Gerrit) 2012/11/09 20:26:28 Please use periods after comments. It makes them e
54 tab.runtime.Evaluate("""
55 if(!window.domAutomationController) {
56 window.domAutomationController = {};
57 }
58 window.domAutomationController.message_queue = [];
59 window.domAutomationController.setAutomationId = function(id) {}
60 window.domAutomationController.send = function(val) {
61 window.domAutomationController.message_queue.push(val);
62 }
63 """)
64
65 def CheckMessages():
66 message = tab.runtime.Evaluate(
67 "window.domAutomationController.message_queue.shift();")
68 return message == "FINISHED"
69
70 telemetry.WaitFor(CheckMessages, 1000, 0.5)
71
72 snapshot = tab.SnapshotContent()
73 if not snapshot:
74 print "Failed to capture snapshot"
75 return 255
76
77 all_pixels_match = CompareToExpectedResults(snapshot, expectations)
78
79 if not all_pixels_match:
80 print "Color check failed at end of test"
81 snapshot.WriteFile(failure_filename_prefix + "-output.png")
82 return 1
83
84 return 0
85
86 def Main(args):
87 options = telemetry.BrowserOptions()
88 parser = options.CreateParser('snapshot_test.py')
89 options, args = parser.parse_args(args)
90
91 options.extra_browser_args.append('--enable-gpu-benchmarking')
92 browser_to_create = telemetry.FindBrowser(options)
93 assert browser_to_create
94 with browser_to_create.Create() as browser:
95 return RunSingleTest(browser,
96 "http://localhost:8000/basic.html",
97 "mapsgl_single_run_basic_expectations.json",
98 "single-run-basic")
99
100 if __name__ == '__main__':
101 sys.exit(Main(sys.argv[1:]))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698