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

Side by Side Diff: tools/perf/page_sets/key_silk_cases.py

Issue 924133002: [Telemetry] Add run_no_page_interactions options to key_silk_cases page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months 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
« no previous file with comments | « tools/perf/benchmarks/rasterize_and_record_micro.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 from telemetry.page import page as page_module 4 from telemetry.page import page as page_module
5 from telemetry.page import page_set as page_set_module 5 from telemetry.page import page_set as page_set_module
6 6
7 7
8 class KeySilkCasesPage(page_module.Page): 8 class KeySilkCasesPage(page_module.Page):
9 9
10 def __init__(self, url, page_set): 10 def __init__(self, url, page_set, run_no_page_interactions):
11 """ Base class for all key silk cases pages.
12
13 Args:
14 run_no_page_interactions: whether the page will run any interactions after
15 navigate steps.
16 """
11 super(KeySilkCasesPage, self).__init__( 17 super(KeySilkCasesPage, self).__init__(
12 url=url, page_set=page_set, credentials_path = 'data/credentials.json') 18 url=url, page_set=page_set, credentials_path = 'data/credentials.json')
13 self.user_agent_type = 'mobile' 19 self.user_agent_type = 'mobile'
14 self.archive_data_file = 'data/key_silk_cases.json' 20 self.archive_data_file = 'data/key_silk_cases.json'
21 self._run_no_page_interactions = run_no_page_interactions
15 22
16 def RunNavigateSteps(self, action_runner): 23 def RunNavigateSteps(self, action_runner):
17 super(KeySilkCasesPage, self).RunNavigateSteps(action_runner) 24 super(KeySilkCasesPage, self).RunNavigateSteps(action_runner)
18 action_runner.Wait(2) 25 action_runner.Wait(2)
19 26
20 def RunPageInteractions(self, action_runner): 27 def RunPageInteractions(self, action_runner):
28 # If a key silk case page wants to customize it actions, it should
29 # overrides the PerformPageInteractions method instead of this method.
30 if self._run_no_page_interactions:
31 return
32 self.PerformPageInteractions(action_runner)
33
34 def PerformPageInteractions(self, action_runner):
35 """ Perform interactions on page after navigate steps.
36 Override this to define custom actions to be run after navigate steps.
37 """
21 interaction = action_runner.BeginGestureInteraction( 38 interaction = action_runner.BeginGestureInteraction(
22 'ScrollAction', is_smooth=True) 39 'ScrollAction', is_smooth=True)
23 action_runner.ScrollPage() 40 action_runner.ScrollPage()
24 interaction.End() 41 interaction.End()
25 42
26 43
27 class Page1(KeySilkCasesPage): 44 class Page1(KeySilkCasesPage):
28 45
29 """ Why: Infinite scroll. Brings out all of our perf issues. """ 46 """ Why: Infinite scroll. Brings out all of our perf issues. """
30 47
31 def __init__(self, page_set): 48 def __init__(self, page_set, run_no_page_interactions):
32 super(Page1, self).__init__( 49 super(Page1, self).__init__(
33 url='http://groupcloned.com/test/plain/list-recycle-transform.html', 50 url='http://groupcloned.com/test/plain/list-recycle-transform.html',
34 page_set=page_set) 51 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
35 52
36 def RunPageInteractions(self, action_runner): 53 def PerformPageInteractions(self, action_runner):
37 interaction = action_runner.BeginGestureInteraction( 54 interaction = action_runner.BeginGestureInteraction(
38 'ScrollAction', is_smooth=True) 55 'ScrollAction', is_smooth=True)
39 action_runner.ScrollElement(selector='#scrollable') 56 action_runner.ScrollElement(selector='#scrollable')
40 interaction.End() 57 interaction.End()
41 58
42 59
43 class Page2(KeySilkCasesPage): 60 class Page2(KeySilkCasesPage):
44 61
45 """ Why: Brings out layer management bottlenecks. """ 62 """ Why: Brings out layer management bottlenecks. """
46 63
47 def __init__(self, page_set): 64 def __init__(self, page_set, run_no_page_interactions):
48 super(Page2, self).__init__( 65 super(Page2, self).__init__(
49 url='http://groupcloned.com/test/plain/list-animation-simple.html', 66 url='http://groupcloned.com/test/plain/list-animation-simple.html',
50 page_set=page_set) 67 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
51 68
52 def RunPageInteractions(self, action_runner): 69 def PerformPageInteractions(self, action_runner):
53 action_runner.Wait(2) 70 action_runner.Wait(2)
54 71
55 72
56 class Page3(KeySilkCasesPage): 73 class Page3(KeySilkCasesPage):
57 74
58 """ 75 """
59 Why: Best-known method for fake sticky. Janks sometimes. Interacts badly with 76 Why: Best-known method for fake sticky. Janks sometimes. Interacts badly with
60 compositor scrolls. 77 compositor scrolls.
61 """ 78 """
62 79
63 def __init__(self, page_set): 80 def __init__(self, page_set, run_no_page_interactions):
64 super(Page3, self).__init__( 81 super(Page3, self).__init__(
65 # pylint: disable=C0301 82 # pylint: disable=C0301
66 url='http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibi lity.html', 83 url='http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibi lity.html',
67 page_set=page_set) 84 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
68 85
69 def RunPageInteractions(self, action_runner): 86 def PerformPageInteractions(self, action_runner):
70 interaction = action_runner.BeginGestureInteraction( 87 interaction = action_runner.BeginGestureInteraction(
71 'ScrollAction', is_smooth=True) 88 'ScrollAction', is_smooth=True)
72 action_runner.ScrollElement(selector='#container') 89 action_runner.ScrollElement(selector='#container')
73 interaction.End() 90 interaction.End()
74 91
75 92
76 class Page4(KeySilkCasesPage): 93 class Page4(KeySilkCasesPage):
77 94
78 """ 95 """
79 Why: Card expansion: only the card should repaint, but in reality lots of 96 Why: Card expansion: only the card should repaint, but in reality lots of
80 storms happen. 97 storms happen.
81 """ 98 """
82 99
83 def __init__(self, page_set): 100 def __init__(self, page_set, run_no_page_interactions):
84 super(Page4, self).__init__( 101 super(Page4, self).__init__(
85 url='http://jsfiddle.net/3yDKh/15/show/', 102 url='http://jsfiddle.net/3yDKh/15/show/',
86 page_set=page_set) 103 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
87 104
88 def RunPageInteractions(self, action_runner): 105 def PerformPageInteractions(self, action_runner):
89 action_runner.Wait(3) 106 action_runner.Wait(3)
90 107
91 108
92 class Page5(KeySilkCasesPage): 109 class Page5(KeySilkCasesPage):
93 110
94 """ 111 """
95 Why: Card expansion with animated contents, using will-change on the card 112 Why: Card expansion with animated contents, using will-change on the card
96 """ 113 """
97 114
98 def __init__(self, page_set): 115 def __init__(self, page_set, run_no_page_interactions):
99 super(Page5, self).__init__( 116 super(Page5, self).__init__(
100 url='http://jsfiddle.net/jx5De/14/show/', 117 url='http://jsfiddle.net/jx5De/14/show/',
101 page_set=page_set) 118 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
102 119
103 self.gpu_raster = True 120 self.gpu_raster = True
104 121
105 def RunPageInteractions(self, action_runner): 122 def PerformPageInteractions(self, action_runner):
106 action_runner.Wait(4) 123 action_runner.Wait(4)
107 124
108 125
109 class Page6(KeySilkCasesPage): 126 class Page6(KeySilkCasesPage):
110 127
111 """ 128 """
112 Why: Card fly-in: It should be fast to animate in a bunch of cards using 129 Why: Card fly-in: It should be fast to animate in a bunch of cards using
113 margin-top and letting layout do the rest. 130 margin-top and letting layout do the rest.
114 """ 131 """
115 132
116 def __init__(self, page_set): 133 def __init__(self, page_set, run_no_page_interactions):
117 super(Page6, self).__init__( 134 super(Page6, self).__init__(
118 url='http://jsfiddle.net/3yDKh/16/show/', 135 url='http://jsfiddle.net/3yDKh/16/show/',
119 page_set=page_set) 136 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
120 137
121 def RunPageInteractions(self, action_runner): 138 def PerformPageInteractions(self, action_runner):
122 action_runner.Wait(3) 139 action_runner.Wait(3)
123 140
124 141
125 class Page7(KeySilkCasesPage): 142 class Page7(KeySilkCasesPage):
126 143
127 """ 144 """
128 Why: Image search expands a spacer div when you click an image to accomplish 145 Why: Image search expands a spacer div when you click an image to accomplish
129 a zoomin effect. Each image has a layer. Even so, this triggers a lot of 146 a zoomin effect. Each image has a layer. Even so, this triggers a lot of
130 unnecessary repainting. 147 unnecessary repainting.
131 """ 148 """
132 149
133 def __init__(self, page_set): 150 def __init__(self, page_set, run_no_page_interactions):
134 super(Page7, self).__init__( 151 super(Page7, self).__init__(
135 url='http://jsfiddle.net/R8DX9/4/show/', 152 url='http://jsfiddle.net/R8DX9/4/show/',
136 page_set=page_set) 153 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
137 154
138 def RunPageInteractions(self, action_runner): 155 def PerformPageInteractions(self, action_runner):
139 action_runner.Wait(3) 156 action_runner.Wait(3)
140 157
141 158
142 class Page8(KeySilkCasesPage): 159 class Page8(KeySilkCasesPage):
143 160
144 """ 161 """
145 Why: Swipe to dismiss of an element that has a fixed-position child that is 162 Why: Swipe to dismiss of an element that has a fixed-position child that is
146 its pseudo-sticky header. Brings out issues with layer creation and 163 its pseudo-sticky header. Brings out issues with layer creation and
147 repainting. 164 repainting.
148 """ 165 """
149 166
150 def __init__(self, page_set): 167 def __init__(self, page_set, run_no_page_interactions):
151 super(Page8, self).__init__( 168 super(Page8, self).__init__(
152 url='http://jsfiddle.net/rF9Gh/7/show/', 169 url='http://jsfiddle.net/rF9Gh/7/show/',
153 page_set=page_set) 170 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
154 171
155 def RunPageInteractions(self, action_runner): 172 def PerformPageInteractions(self, action_runner):
156 action_runner.Wait(3) 173 action_runner.Wait(3)
157 174
158 175
159 class Page9(KeySilkCasesPage): 176 class Page9(KeySilkCasesPage):
160 177
161 """ 178 """
162 Why: Horizontal and vertical expansion of a card that is cheap to layout but 179 Why: Horizontal and vertical expansion of a card that is cheap to layout but
163 costly to rasterize. 180 costly to rasterize.
164 """ 181 """
165 182
166 def __init__(self, page_set): 183 def __init__(self, page_set, run_no_page_interactions):
167 super(Page9, self).__init__( 184 super(Page9, self).__init__(
168 url='http://jsfiddle.net/TLXLu/3/show/', 185 url='http://jsfiddle.net/TLXLu/3/show/',
169 page_set=page_set) 186 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
170 187
171 self.gpu_raster = True 188 self.gpu_raster = True
172 189
173 def RunPageInteractions(self, action_runner): 190 def PerformPageInteractions(self, action_runner):
174 action_runner.Wait(4) 191 action_runner.Wait(4)
175 192
176 193
177 class Page10(KeySilkCasesPage): 194 class Page10(KeySilkCasesPage):
178 195
179 """ 196 """
180 Why: Vertical Expansion of a card that is cheap to layout but costly to 197 Why: Vertical Expansion of a card that is cheap to layout but costly to
181 rasterize. 198 rasterize.
182 """ 199 """
183 200
184 def __init__(self, page_set): 201 def __init__(self, page_set, run_no_page_interactions):
185 super(Page10, self).__init__( 202 super(Page10, self).__init__(
186 url='http://jsfiddle.net/cKB9D/7/show/', 203 url='http://jsfiddle.net/cKB9D/7/show/',
187 page_set=page_set) 204 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
188 205
189 self.gpu_raster = True 206 self.gpu_raster = True
190 207
191 def RunPageInteractions(self, action_runner): 208 def PerformPageInteractions(self, action_runner):
192 action_runner.Wait(4) 209 action_runner.Wait(4)
193 210
194 211
195 class Page11(KeySilkCasesPage): 212 class Page11(KeySilkCasesPage):
196 213
197 """ 214 """
198 Why: Parallax effect is common on photo-viewer-like applications, overloading 215 Why: Parallax effect is common on photo-viewer-like applications, overloading
199 software rasterization 216 software rasterization
200 """ 217 """
201 218
202 def __init__(self, page_set): 219 def __init__(self, page_set, run_no_page_interactions):
203 super(Page11, self).__init__( 220 super(Page11, self).__init__(
204 url='http://jsfiddle.net/vBQHH/11/show/', 221 url='http://jsfiddle.net/vBQHH/11/show/',
205 page_set=page_set) 222 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
206 223
207 self.gpu_raster = True 224 self.gpu_raster = True
208 225
209 def RunPageInteractions(self, action_runner): 226 def PerformPageInteractions(self, action_runner):
210 action_runner.Wait(4) 227 action_runner.Wait(4)
211 228
212 229
213 class Page12(KeySilkCasesPage): 230 class Page12(KeySilkCasesPage):
214 231
215 """ Why: Addressing paint storms during coordinated animations. """ 232 """ Why: Addressing paint storms during coordinated animations. """
216 233
217 def __init__(self, page_set): 234 def __init__(self, page_set, run_no_page_interactions):
218 super(Page12, self).__init__( 235 super(Page12, self).__init__(
219 url='http://jsfiddle.net/ugkd4/10/show/', 236 url='http://jsfiddle.net/ugkd4/10/show/',
220 page_set=page_set) 237 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
221 238
222 def RunPageInteractions(self, action_runner): 239 def PerformPageInteractions(self, action_runner):
223 action_runner.Wait(5) 240 action_runner.Wait(5)
224 241
225 242
226 class Page13(KeySilkCasesPage): 243 class Page13(KeySilkCasesPage):
227 244
228 """ Why: Mask transitions are common mobile use cases. """ 245 """ Why: Mask transitions are common mobile use cases. """
229 246
230 def __init__(self, page_set): 247 def __init__(self, page_set, run_no_page_interactions):
231 super(Page13, self).__init__( 248 super(Page13, self).__init__(
232 url='http://jsfiddle.net/xLuvC/1/show/', 249 url='http://jsfiddle.net/xLuvC/1/show/',
233 page_set=page_set) 250 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
234 251
235 self.gpu_raster = True 252 self.gpu_raster = True
236 253
237 def RunPageInteractions(self, action_runner): 254 def PerformPageInteractions(self, action_runner):
238 action_runner.Wait(4) 255 action_runner.Wait(4)
239 256
240 257
241 class Page14(KeySilkCasesPage): 258 class Page14(KeySilkCasesPage):
242 259
243 """ Why: Card expansions with images and text are pretty and common. """ 260 """ Why: Card expansions with images and text are pretty and common. """
244 261
245 def __init__(self, page_set): 262 def __init__(self, page_set, run_no_page_interactions):
246 super(Page14, self).__init__( 263 super(Page14, self).__init__(
247 url='http://jsfiddle.net/bNp2h/3/show/', 264 url='http://jsfiddle.net/bNp2h/3/show/',
248 page_set=page_set) 265 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
249 266
250 self.gpu_raster = True 267 self.gpu_raster = True
251 268
252 def RunPageInteractions(self, action_runner): 269 def PerformPageInteractions(self, action_runner):
253 action_runner.Wait(4) 270 action_runner.Wait(4)
254 271
255 272
256 class Page15(KeySilkCasesPage): 273 class Page15(KeySilkCasesPage):
257 274
258 """ Why: Coordinated animations for expanding elements. """ 275 """ Why: Coordinated animations for expanding elements. """
259 276
260 def __init__(self, page_set): 277 def __init__(self, page_set, run_no_page_interactions):
261 super(Page15, self).__init__( 278 super(Page15, self).__init__(
262 url='file://key_silk_cases/font_wipe.html', 279 url='file://key_silk_cases/font_wipe.html',
263 page_set=page_set) 280 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
264 281
265 def RunPageInteractions(self, action_runner): 282 def PerformPageInteractions(self, action_runner):
266 action_runner.Wait(5) 283 action_runner.Wait(5)
267 284
268 285
269 class Page16(KeySilkCasesPage): 286 class Page16(KeySilkCasesPage):
270 287
271 def __init__(self, page_set): 288 def __init__(self, page_set, run_no_page_interactions):
272 super(Page16, self).__init__( 289 super(Page16, self).__init__(
273 url='file://key_silk_cases/inbox_app.html?swipe_to_dismiss', 290 url='file://key_silk_cases/inbox_app.html?swipe_to_dismiss',
274 page_set=page_set) 291 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
275 292
276 def SwipeToDismiss(self, action_runner): 293 def SwipeToDismiss(self, action_runner):
277 interaction = action_runner.BeginGestureInteraction( 294 interaction = action_runner.BeginGestureInteraction(
278 'SwipeAction', is_smooth=True) 295 'SwipeAction', is_smooth=True)
279 action_runner.SwipeElement( 296 action_runner.SwipeElement(
280 left_start_ratio=0.8, top_start_ratio=0.2, 297 left_start_ratio=0.8, top_start_ratio=0.2,
281 direction='left', distance=400, speed_in_pixels_per_second=5000, 298 direction='left', distance=400, speed_in_pixels_per_second=5000,
282 element_function='document.getElementsByClassName("message")[2]') 299 element_function='document.getElementsByClassName("message")[2]')
283 interaction.End() 300 interaction.End()
284 301
285 def RunPageInteractions(self, action_runner): 302 def PerformPageInteractions(self, action_runner):
286 self.SwipeToDismiss(action_runner) 303 self.SwipeToDismiss(action_runner)
287 304
288 305
289 class Page17(KeySilkCasesPage): 306 class Page17(KeySilkCasesPage):
290 307
291 def __init__(self, page_set): 308 def __init__(self, page_set, run_no_page_interactions):
292 super(Page17, self).__init__( 309 super(Page17, self).__init__(
293 url='file://key_silk_cases/inbox_app.html?stress_hidey_bars', 310 url='file://key_silk_cases/inbox_app.html?stress_hidey_bars',
294 page_set=page_set) 311 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
295 312
296 def RunPageInteractions(self, action_runner): 313 def PerformPageInteractions(self, action_runner):
297 self.StressHideyBars(action_runner) 314 self.StressHideyBars(action_runner)
298 315
299 def StressHideyBars(self, action_runner): 316 def StressHideyBars(self, action_runner):
300 interaction = action_runner.BeginGestureInteraction( 317 interaction = action_runner.BeginGestureInteraction(
301 'ScrollAction', is_smooth=True) 318 'ScrollAction', is_smooth=True)
302 action_runner.ScrollElement( 319 action_runner.ScrollElement(
303 selector='#messages', direction='down', speed_in_pixels_per_second=200) 320 selector='#messages', direction='down', speed_in_pixels_per_second=200)
304 interaction.End() 321 interaction.End()
305 interaction = action_runner.BeginGestureInteraction( 322 interaction = action_runner.BeginGestureInteraction(
306 'ScrollAction', is_smooth=True) 323 'ScrollAction', is_smooth=True)
307 action_runner.ScrollElement( 324 action_runner.ScrollElement(
308 selector='#messages', direction='up', speed_in_pixels_per_second=200) 325 selector='#messages', direction='up', speed_in_pixels_per_second=200)
309 interaction.End() 326 interaction.End()
310 interaction = action_runner.BeginGestureInteraction( 327 interaction = action_runner.BeginGestureInteraction(
311 'ScrollAction', is_smooth=True) 328 'ScrollAction', is_smooth=True)
312 action_runner.ScrollElement( 329 action_runner.ScrollElement(
313 selector='#messages', direction='down', speed_in_pixels_per_second=200) 330 selector='#messages', direction='down', speed_in_pixels_per_second=200)
314 interaction.End() 331 interaction.End()
315 332
316 333
317 class Page18(KeySilkCasesPage): 334 class Page18(KeySilkCasesPage):
318 335
319 def __init__(self, page_set): 336 def __init__(self, page_set, run_no_page_interactions):
320 super(Page18, self).__init__( 337 super(Page18, self).__init__(
321 url='file://key_silk_cases/inbox_app.html?toggle_drawer', 338 url='file://key_silk_cases/inbox_app.html?toggle_drawer',
322 page_set=page_set) 339 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
323 340
324 def RunPageInteractions(self, action_runner): 341 def PerformPageInteractions(self, action_runner):
325 for _ in xrange(6): 342 for _ in xrange(6):
326 self.ToggleDrawer(action_runner) 343 self.ToggleDrawer(action_runner)
327 344
328 def ToggleDrawer(self, action_runner): 345 def ToggleDrawer(self, action_runner):
329 interaction = action_runner.BeginInteraction( 346 interaction = action_runner.BeginInteraction(
330 'Action_TapAction', is_smooth=True) 347 'Action_TapAction', is_smooth=True)
331 action_runner.TapElement('#menu-button') 348 action_runner.TapElement('#menu-button')
332 action_runner.Wait(1) 349 action_runner.Wait(1)
333 interaction.End() 350 interaction.End()
334 351
335 352
336 class Page19(KeySilkCasesPage): 353 class Page19(KeySilkCasesPage):
337 354
338 def __init__(self, page_set): 355 def __init__(self, page_set, run_no_page_interactions):
339 super(Page19, self).__init__( 356 super(Page19, self).__init__(
340 url='file://key_silk_cases/inbox_app.html?slide_drawer', 357 url='file://key_silk_cases/inbox_app.html?slide_drawer',
341 page_set=page_set) 358 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
342 359
343 def ToggleDrawer(self, action_runner): 360 def ToggleDrawer(self, action_runner):
344 interaction = action_runner.BeginGestureInteraction( 361 interaction = action_runner.BeginGestureInteraction(
345 'TapAction', is_smooth=True) 362 'TapAction', is_smooth=True)
346 action_runner.TapElement('#menu-button') 363 action_runner.TapElement('#menu-button')
347 interaction.End() 364 interaction.End()
348 365
349 interaction = action_runner.BeginInteraction('Wait', is_smooth=True) 366 interaction = action_runner.BeginInteraction('Wait', is_smooth=True)
350 action_runner.WaitForJavaScriptCondition(''' 367 action_runner.WaitForJavaScriptCondition('''
351 document.getElementById("nav-drawer").active && 368 document.getElementById("nav-drawer").active &&
352 document.getElementById("nav-drawer").children[0] 369 document.getElementById("nav-drawer").children[0]
353 .getBoundingClientRect().left == 0''') 370 .getBoundingClientRect().left == 0''')
354 interaction.End() 371 interaction.End()
355 372
356 def RunNavigateSteps(self, action_runner): 373 def RunNavigateSteps(self, action_runner):
357 super(Page19, self).RunNavigateSteps(action_runner) 374 super(Page19, self).RunNavigateSteps(action_runner)
358 action_runner.Wait(2) 375 action_runner.Wait(2)
359 self.ToggleDrawer(action_runner) 376 self.ToggleDrawer(action_runner)
360 377
361 def RunPageInteractions(self, action_runner): 378 def PerformPageInteractions(self, action_runner):
362 self.SlideDrawer(action_runner) 379 self.SlideDrawer(action_runner)
363 380
364 def SlideDrawer(self, action_runner): 381 def SlideDrawer(self, action_runner):
365 interaction = action_runner.BeginInteraction( 382 interaction = action_runner.BeginInteraction(
366 'Action_SwipeAction', is_smooth=True) 383 'Action_SwipeAction', is_smooth=True)
367 action_runner.SwipeElement( 384 action_runner.SwipeElement(
368 left_start_ratio=0.8, top_start_ratio=0.2, 385 left_start_ratio=0.8, top_start_ratio=0.2,
369 direction='left', distance=200, 386 direction='left', distance=200,
370 element_function='document.getElementById("nav-drawer").children[0]') 387 element_function='document.getElementById("nav-drawer").children[0]')
371 action_runner.WaitForJavaScriptCondition( 388 action_runner.WaitForJavaScriptCondition(
372 '!document.getElementById("nav-drawer").active') 389 '!document.getElementById("nav-drawer").active')
373 interaction.End() 390 interaction.End()
374 391
375 392
376 class Page20(KeySilkCasesPage): 393 class Page20(KeySilkCasesPage):
377 394
378 """ Why: Shadow DOM infinite scrolling. """ 395 """ Why: Shadow DOM infinite scrolling. """
379 396
380 def __init__(self, page_set): 397 def __init__(self, page_set, run_no_page_interactions):
381 super(Page20, self).__init__( 398 super(Page20, self).__init__(
382 url='file://key_silk_cases/infinite_scrolling.html', 399 url='file://key_silk_cases/infinite_scrolling.html',
383 page_set=page_set) 400 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
384 401
385 def RunPageInteractions(self, action_runner): 402 def PerformPageInteractions(self, action_runner):
386 interaction = action_runner.BeginGestureInteraction( 403 interaction = action_runner.BeginGestureInteraction(
387 'ScrollAction', is_smooth=True) 404 'ScrollAction', is_smooth=True)
388 action_runner.ScrollElement( 405 action_runner.ScrollElement(
389 selector='#container', speed_in_pixels_per_second=5000) 406 selector='#container', speed_in_pixels_per_second=5000)
390 interaction.End() 407 interaction.End()
391 408
392 409
393 class GwsExpansionPage(KeySilkCasesPage): 410 class GwsExpansionPage(KeySilkCasesPage):
394 """Abstract base class for pages that expand Google knowledge panels.""" 411 """Abstract base class for pages that expand Google knowledge panels."""
395 412
396 def NavigateWait(self, action_runner): 413 def NavigateWait(self, action_runner):
397 super(GwsExpansionPage, self).RunNavigateSteps(action_runner) 414 super(GwsExpansionPage, self).RunNavigateSteps(action_runner)
398 action_runner.Wait(3) 415 action_runner.Wait(3)
399 416
400 def ExpandKnowledgeCard(self, action_runner): 417 def ExpandKnowledgeCard(self, action_runner):
401 # expand card 418 # expand card
402 interaction = action_runner.BeginInteraction( 419 interaction = action_runner.BeginInteraction(
403 'Action_TapAction', is_smooth=True) 420 'Action_TapAction', is_smooth=True)
404 action_runner.TapElement( 421 action_runner.TapElement(
405 element_function='document.getElementsByClassName("vk_arc")[0]') 422 element_function='document.getElementsByClassName("vk_arc")[0]')
406 action_runner.Wait(2) 423 action_runner.Wait(2)
407 interaction.End() 424 interaction.End()
408 425
409 def ScrollKnowledgeCardToTop(self, action_runner, card_id): 426 def ScrollKnowledgeCardToTop(self, action_runner, card_id):
410 # scroll until the knowledge card is at the top 427 # scroll until the knowledge card is at the top
411 action_runner.ExecuteJavaScript( 428 action_runner.ExecuteJavaScript(
412 "document.getElementById('%s').scrollIntoView()" % card_id) 429 "document.getElementById('%s').scrollIntoView()" % card_id)
413 430
414 def RunPageInteractions(self, action_runner): 431 def PerformPageInteractions(self, action_runner):
415 self.ExpandKnowledgeCard(action_runner) 432 self.ExpandKnowledgeCard(action_runner)
416 433
417 434
418 class GwsGoogleExpansion(GwsExpansionPage): 435 class GwsGoogleExpansion(GwsExpansionPage):
419 436
420 """ Why: Animating height of a complex content card is common. """ 437 """ Why: Animating height of a complex content card is common. """
421 438
422 def __init__(self, page_set): 439 def __init__(self, page_set, run_no_page_interactions):
423 super(GwsGoogleExpansion, self).__init__( 440 super(GwsGoogleExpansion, self).__init__(
424 url='http://www.google.com/#q=google', 441 url='http://www.google.com/#q=google',
425 page_set=page_set) 442 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
426 443
427 def RunNavigateSteps(self, action_runner): 444 def RunNavigateSteps(self, action_runner):
428 self.NavigateWait(action_runner) 445 self.NavigateWait(action_runner)
429 self.ScrollKnowledgeCardToTop(action_runner, 'kno-result') 446 self.ScrollKnowledgeCardToTop(action_runner, 'kno-result')
430 447
431 448
432 class GwsBoogieExpansion(GwsExpansionPage): 449 class GwsBoogieExpansion(GwsExpansionPage):
433 450
434 """ Why: Same case as Google expansion but text-heavy rather than image. """ 451 """ Why: Same case as Google expansion but text-heavy rather than image. """
435 452
436 def __init__(self, page_set): 453 def __init__(self, page_set, run_no_page_interactions):
437 super(GwsBoogieExpansion, self).__init__( 454 super(GwsBoogieExpansion, self).__init__(
438 url='https://www.google.com/search?hl=en&q=define%3Aboogie', 455 url='https://www.google.com/search?hl=en&q=define%3Aboogie',
439 page_set=page_set) 456 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
440 457
441 def RunNavigateSteps(self, action_runner): 458 def RunNavigateSteps(self, action_runner):
442 self.NavigateWait(action_runner) 459 self.NavigateWait(action_runner)
443 self.ScrollKnowledgeCardToTop(action_runner, 'rso') 460 self.ScrollKnowledgeCardToTop(action_runner, 'rso')
444 461
445 462
446 class Page22(KeySilkCasesPage): 463 class Page22(KeySilkCasesPage):
447 464
448 def __init__(self, page_set): 465 def __init__(self, page_set, run_no_page_interactions):
449 super(Page22, self).__init__( 466 super(Page22, self).__init__(
450 url='http://plus.google.com/app/basic/stream', 467 url='http://plus.google.com/app/basic/stream',
451 page_set=page_set) 468 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
452 469
453 self.credentials = 'google' 470 self.credentials = 'google'
454 471
455 def RunNavigateSteps(self, action_runner): 472 def RunNavigateSteps(self, action_runner):
456 super(Page22, self).RunNavigateSteps(action_runner) 473 super(Page22, self).RunNavigateSteps(action_runner)
457 action_runner.WaitForJavaScriptCondition( 474 action_runner.WaitForJavaScriptCondition(
458 'document.getElementsByClassName("fHa").length > 0') 475 'document.getElementsByClassName("fHa").length > 0')
459 action_runner.Wait(2) 476 action_runner.Wait(2)
460 477
461 def RunPageInteractions(self, action_runner): 478 def PerformPageInteractions(self, action_runner):
462 interaction = action_runner.BeginGestureInteraction( 479 interaction = action_runner.BeginGestureInteraction(
463 'ScrollAction', is_smooth=True) 480 'ScrollAction', is_smooth=True)
464 action_runner.ScrollElement(selector='#mainContent') 481 action_runner.ScrollElement(selector='#mainContent')
465 interaction.End() 482 interaction.End()
466 483
467 484
468 class Page23(KeySilkCasesPage): 485 class Page23(KeySilkCasesPage):
469 486
470 """ 487 """
471 Why: Physical simulation demo that does a lot of element.style mutation 488 Why: Physical simulation demo that does a lot of element.style mutation
472 triggering JS and recalc slowness 489 triggering JS and recalc slowness
473 """ 490 """
474 491
475 def __init__(self, page_set): 492 def __init__(self, page_set, run_no_page_interactions):
476 super(Page23, self).__init__( 493 super(Page23, self).__init__(
477 url='http://jsbin.com/UVIgUTa/38/quiet', 494 url='http://jsbin.com/UVIgUTa/38/quiet',
478 page_set=page_set) 495 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
479 496
480 def RunPageInteractions(self, action_runner): 497 def PerformPageInteractions(self, action_runner):
481 interaction = action_runner.BeginGestureInteraction( 498 interaction = action_runner.BeginGestureInteraction(
482 'ScrollAction', is_smooth=True) 499 'ScrollAction', is_smooth=True)
483 action_runner.ScrollPage( 500 action_runner.ScrollPage(
484 distance_expr='window.innerHeight / 2', 501 distance_expr='window.innerHeight / 2',
485 direction='down', 502 direction='down',
486 use_touch=True) 503 use_touch=True)
487 interaction.End() 504 interaction.End()
488 interaction = action_runner.BeginInteraction('Wait', is_smooth=True) 505 interaction = action_runner.BeginInteraction('Wait', is_smooth=True)
489 action_runner.Wait(1) 506 action_runner.Wait(1)
490 interaction.End() 507 interaction.End()
491 508
492 509
493 class Page24(KeySilkCasesPage): 510 class Page24(KeySilkCasesPage):
494 511
495 """ 512 """
496 Why: Google News: this iOS version is slower than accelerated scrolling 513 Why: Google News: this iOS version is slower than accelerated scrolling
497 """ 514 """
498 515
499 def __init__(self, page_set): 516 def __init__(self, page_set, run_no_page_interactions):
500 super(Page24, self).__init__( 517 super(Page24, self).__init__(
501 url='http://mobile-news.sandbox.google.com/news/pt0?scroll', 518 url='http://mobile-news.sandbox.google.com/news/pt0?scroll',
502 page_set=page_set) 519 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
503 520
504 def RunNavigateSteps(self, action_runner): 521 def RunNavigateSteps(self, action_runner):
505 super(Page24, self).RunNavigateSteps(action_runner) 522 super(Page24, self).RunNavigateSteps(action_runner)
506 action_runner.WaitForJavaScriptCondition( 523 action_runner.WaitForJavaScriptCondition(
507 'document.getElementById(":h") != null') 524 'document.getElementById(":h") != null')
508 action_runner.Wait(1) 525 action_runner.Wait(1)
509 526
510 def RunPageInteractions(self, action_runner): 527 def PerformPageInteractions(self, action_runner):
511 interaction = action_runner.BeginGestureInteraction( 528 interaction = action_runner.BeginGestureInteraction(
512 'ScrollAction', is_smooth=True) 529 'ScrollAction', is_smooth=True)
513 action_runner.ScrollElement( 530 action_runner.ScrollElement(
514 element_function='document.getElementById(":5")', 531 element_function='document.getElementById(":5")',
515 distance=2500, 532 distance=2500,
516 use_touch=True) 533 use_touch=True)
517 interaction.End() 534 interaction.End()
518 535
519 536
520 class Page25(KeySilkCasesPage): 537 class Page25(KeySilkCasesPage):
521 538
522 def __init__(self, page_set): 539 def __init__(self, page_set, run_no_page_interactions):
523 super(Page25, self).__init__( 540 super(Page25, self).__init__(
524 url='http://mobile-news.sandbox.google.com/news/pt0?swipe', 541 url='http://mobile-news.sandbox.google.com/news/pt0?swipe',
525 page_set=page_set) 542 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
526 543
527 def RunNavigateSteps(self, action_runner): 544 def RunNavigateSteps(self, action_runner):
528 super(Page25, self).RunNavigateSteps(action_runner) 545 super(Page25, self).RunNavigateSteps(action_runner)
529 action_runner.WaitForJavaScriptCondition( 546 action_runner.WaitForJavaScriptCondition(
530 'document.getElementById(":h") != null') 547 'document.getElementById(":h") != null')
531 action_runner.Wait(1) 548 action_runner.Wait(1)
532 549
533 def RunPageInteractions(self, action_runner): 550 def PerformPageInteractions(self, action_runner):
534 interaction = action_runner.BeginGestureInteraction( 551 interaction = action_runner.BeginGestureInteraction(
535 'SwipeAction', is_smooth=True) 552 'SwipeAction', is_smooth=True)
536 action_runner.SwipeElement( 553 action_runner.SwipeElement(
537 direction='left', distance=100, 554 direction='left', distance=100,
538 element_function='document.getElementById(":f")') 555 element_function='document.getElementById(":f")')
539 interaction.End() 556 interaction.End()
540 interaction = action_runner.BeginInteraction('Wait', is_smooth=True) 557 interaction = action_runner.BeginInteraction('Wait', is_smooth=True)
541 action_runner.Wait(1) 558 action_runner.Wait(1)
542 interaction.End() 559 interaction.End()
543 560
544 561
545 class Page26(KeySilkCasesPage): 562 class Page26(KeySilkCasesPage):
546 563
547 """ Why: famo.us twitter demo """ 564 """ Why: famo.us twitter demo """
548 565
549 def __init__(self, page_set): 566 def __init__(self, page_set, run_no_page_interactions):
550 super(Page26, self).__init__( 567 super(Page26, self).__init__(
551 url='http://s.codepen.io/befamous/fullpage/pFsqb?scroll', 568 url='http://s.codepen.io/befamous/fullpage/pFsqb?scroll',
552 page_set=page_set) 569 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
553 570
554 def RunNavigateSteps(self, action_runner): 571 def RunNavigateSteps(self, action_runner):
555 super(Page26, self).RunNavigateSteps(action_runner) 572 super(Page26, self).RunNavigateSteps(action_runner)
556 action_runner.WaitForJavaScriptCondition( 573 action_runner.WaitForJavaScriptCondition(
557 'document.getElementsByClassName("tweet").length > 0') 574 'document.getElementsByClassName("tweet").length > 0')
558 action_runner.Wait(1) 575 action_runner.Wait(1)
559 576
560 def RunPageInteractions(self, action_runner): 577 def PerformPageInteractions(self, action_runner):
561 interaction = action_runner.BeginGestureInteraction( 578 interaction = action_runner.BeginGestureInteraction(
562 'ScrollAction', is_smooth=True) 579 'ScrollAction', is_smooth=True)
563 action_runner.ScrollPage(distance=5000) 580 action_runner.ScrollPage(distance=5000)
564 interaction.End() 581 interaction.End()
565 582
566 583
567 class SVGIconRaster(KeySilkCasesPage): 584 class SVGIconRaster(KeySilkCasesPage):
568 585
569 """ Why: Mutating SVG icons; these paint storm and paint slowly. """ 586 """ Why: Mutating SVG icons; these paint storm and paint slowly. """
570 587
571 def __init__(self, page_set): 588 def __init__(self, page_set, run_no_page_interactions):
572 super(SVGIconRaster, self).__init__( 589 super(SVGIconRaster, self).__init__(
573 url='http://wiltzius.github.io/shape-shifter/', 590 url='http://wiltzius.github.io/shape-shifter/',
574 page_set=page_set) 591 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
575 592
576 def RunNavigateSteps(self, action_runner): 593 def RunNavigateSteps(self, action_runner):
577 super(SVGIconRaster, self).RunNavigateSteps(action_runner) 594 super(SVGIconRaster, self).RunNavigateSteps(action_runner)
578 action_runner.WaitForJavaScriptCondition( 595 action_runner.WaitForJavaScriptCondition(
579 'loaded = true') 596 'loaded = true')
580 action_runner.Wait(1) 597 action_runner.Wait(1)
581 598
582 def RunPageInteractions(self, action_runner): 599 def PerformPageInteractions(self, action_runner):
583 for i in xrange(9): 600 for i in xrange(9):
584 button_func = ('document.getElementById("demo").$.' 601 button_func = ('document.getElementById("demo").$.'
585 'buttons.children[%d]') % i 602 'buttons.children[%d]') % i
586 interaction = action_runner.BeginInteraction( 603 interaction = action_runner.BeginInteraction(
587 'Action_TapAction', is_smooth=True) 604 'Action_TapAction', is_smooth=True)
588 action_runner.TapElement(element_function=button_func) 605 action_runner.TapElement(element_function=button_func)
589 action_runner.Wait(1) 606 action_runner.Wait(1)
590 interaction.End() 607 interaction.End()
591 608
592 609
593 class UpdateHistoryState(KeySilkCasesPage): 610 class UpdateHistoryState(KeySilkCasesPage):
594 611
595 """ Why: Modern apps often update history state, which currently is janky.""" 612 """ Why: Modern apps often update history state, which currently is janky."""
596 613
597 def __init__(self, page_set): 614 def __init__(self, page_set, run_no_page_interactions):
598 super(UpdateHistoryState, self).__init__( 615 super(UpdateHistoryState, self).__init__(
599 url='file://key_silk_cases/pushState.html', 616 url='file://key_silk_cases/pushState.html',
600 page_set=page_set) 617 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
601 618
602 def RunNavigateSteps(self, action_runner): 619 def RunNavigateSteps(self, action_runner):
603 super(UpdateHistoryState, self).RunNavigateSteps(action_runner) 620 super(UpdateHistoryState, self).RunNavigateSteps(action_runner)
604 action_runner.ExecuteJavaScript(''' 621 action_runner.ExecuteJavaScript('''
605 window.requestAnimationFrame(function() { 622 window.requestAnimationFrame(function() {
606 window.__history_state_loaded = true; 623 window.__history_state_loaded = true;
607 }); 624 });
608 ''') 625 ''')
609 action_runner.WaitForJavaScriptCondition( 626 action_runner.WaitForJavaScriptCondition(
610 'window.__history_state_loaded == true;') 627 'window.__history_state_loaded == true;')
611 628
612 def RunPageInteractions(self, action_runner): 629 def PerformPageInteractions(self, action_runner):
613 interaction = action_runner.BeginInteraction('animation_interaction', 630 interaction = action_runner.BeginInteraction('animation_interaction',
614 is_smooth=True) 631 is_smooth=True)
615 action_runner.Wait(5) # JS runs the animation continuously on the page 632 action_runner.Wait(5) # JS runs the animation continuously on the page
616 interaction.End() 633 interaction.End()
617 634
618 635
619 class SilkFinance(KeySilkCasesPage): 636 class SilkFinance(KeySilkCasesPage):
620 637
621 """ Why: Some effects repaint the page, possibly including plenty of text. """ 638 """ Why: Some effects repaint the page, possibly including plenty of text. """
622 639
623 def __init__(self, page_set): 640 def __init__(self, page_set, run_no_page_interactions):
624 super(SilkFinance, self).__init__( 641 super(SilkFinance, self).__init__(
625 url='file://key_silk_cases/silk_finance.html', 642 url='file://key_silk_cases/silk_finance.html',
626 page_set=page_set) 643 page_set=page_set, run_no_page_interactions=run_no_page_interactions)
627 644
628 def RunPageInteractions(self, action_runner): 645 def PerformPageInteractions(self, action_runner):
629 interaction = action_runner.BeginInteraction('animation_interaction', 646 interaction = action_runner.BeginInteraction('animation_interaction',
630 is_smooth=True) 647 is_smooth=True)
631 action_runner.Wait(10) # animation runs automatically 648 action_runner.Wait(10) # animation runs automatically
632 interaction.End() 649 interaction.End()
633 650
634 651
635 class KeySilkCasesPageSet(page_set_module.PageSet): 652 class KeySilkCasesPageSet(page_set_module.PageSet):
636 653
637 """ Pages hand-picked for project Silk. """ 654 """ Pages hand-picked for project Silk. """
638 655
639 def __init__(self): 656 def __init__(self, run_no_page_interactions=False):
640 super(KeySilkCasesPageSet, self).__init__( 657 super(KeySilkCasesPageSet, self).__init__(
641 user_agent_type='mobile', 658 user_agent_type='mobile',
642 archive_data_file='data/key_silk_cases.json', 659 archive_data_file='data/key_silk_cases.json',
643 bucket=page_set_module.PARTNER_BUCKET) 660 bucket=page_set_module.PARTNER_BUCKET)
644 661
645 self.AddUserStory(Page1(self)) 662 self.AddUserStory(Page1(self, run_no_page_interactions))
646 self.AddUserStory(Page2(self)) 663 self.AddUserStory(Page2(self, run_no_page_interactions))
647 self.AddUserStory(Page3(self)) 664 self.AddUserStory(Page3(self, run_no_page_interactions))
648 self.AddUserStory(Page4(self)) 665 self.AddUserStory(Page4(self, run_no_page_interactions))
649 self.AddUserStory(Page5(self)) 666 self.AddUserStory(Page5(self, run_no_page_interactions))
650 self.AddUserStory(Page6(self)) 667 self.AddUserStory(Page6(self, run_no_page_interactions))
651 self.AddUserStory(Page7(self)) 668 self.AddUserStory(Page7(self, run_no_page_interactions))
652 self.AddUserStory(Page8(self)) 669 self.AddUserStory(Page8(self, run_no_page_interactions))
653 self.AddUserStory(Page9(self)) 670 self.AddUserStory(Page9(self, run_no_page_interactions))
654 self.AddUserStory(Page10(self)) 671 self.AddUserStory(Page10(self, run_no_page_interactions))
655 self.AddUserStory(Page11(self)) 672 self.AddUserStory(Page11(self, run_no_page_interactions))
656 self.AddUserStory(Page12(self)) 673 self.AddUserStory(Page12(self, run_no_page_interactions))
657 self.AddUserStory(Page13(self)) 674 self.AddUserStory(Page13(self, run_no_page_interactions))
658 self.AddUserStory(Page14(self)) 675 self.AddUserStory(Page14(self, run_no_page_interactions))
659 self.AddUserStory(Page15(self)) 676 self.AddUserStory(Page15(self, run_no_page_interactions))
660 self.AddUserStory(Page16(self)) 677 self.AddUserStory(Page16(self, run_no_page_interactions))
661 self.AddUserStory(Page17(self)) 678 self.AddUserStory(Page17(self, run_no_page_interactions))
662 self.AddUserStory(Page18(self)) 679 self.AddUserStory(Page18(self, run_no_page_interactions))
663 # Missing frames during tap interaction; crbug.com/446332 680 # Missing frames during tap interaction; crbug.com/446332
664 # self.AddUserStory(Page19(self)) 681 # self.AddUserStory(Page19(self, run_no_page_interactions))
665 self.AddUserStory(Page20(self)) 682 self.AddUserStory(Page20(self, run_no_page_interactions))
666 self.AddUserStory(GwsGoogleExpansion(self)) 683 self.AddUserStory(GwsGoogleExpansion(self, run_no_page_interactions))
667 self.AddUserStory(GwsBoogieExpansion(self)) 684 self.AddUserStory(GwsBoogieExpansion(self, run_no_page_interactions))
668 # Times out on Windows; crbug.com/338838 685 # Times out on Windows; crbug.com/338838
669 # self.AddUserStory(Page22(self)) 686 # self.AddUserStory(Page22(self, run_no_page_interactions))
670 self.AddUserStory(Page23(self)) 687 self.AddUserStory(Page23(self, run_no_page_interactions))
671 self.AddUserStory(Page24(self)) 688 self.AddUserStory(Page24(self, run_no_page_interactions))
672 self.AddUserStory(Page25(self)) 689 self.AddUserStory(Page25(self, run_no_page_interactions))
673 self.AddUserStory(Page26(self)) 690 self.AddUserStory(Page26(self, run_no_page_interactions))
674 self.AddUserStory(SVGIconRaster(self)) 691 self.AddUserStory(SVGIconRaster(self, run_no_page_interactions))
675 self.AddUserStory(UpdateHistoryState(self)) 692 self.AddUserStory(UpdateHistoryState(self, run_no_page_interactions))
676 self.AddUserStory(SilkFinance(self)) 693 self.AddUserStory(SilkFinance(self, run_no_page_interactions))
694
695 for page in self:
696 assert (page.__class__.RunPageInteractions ==
697 KeySilkCasesPage.RunPageInteractions), (
698 'Pages in this page set must not override KeySilkCasesPage\' '
699 'RunPageInteractions method.')
OLDNEW
« no previous file with comments | « tools/perf/benchmarks/rasterize_and_record_micro.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698