OLD | NEW |
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.') |
OLD | NEW |