2 "description": "Pages hand-picked for project Silk.",
3 "archive_data_file": "data/key_silk_cases.json",
4 "credentials_path": "data/credentials.json",
5 "user_agent_type": "mobile",
6 "smoothness": { "action": "scroll" },
8 { "action": "navigate" },
9 { "action": "wait", "seconds": 2 }
13 "url": "http://groupcloned.com/test/plain/list-recycle-transform.html",
14 "why": "Infinite scroll. Brings out all of our perf issues.",
17 "scrollable_element_function": "function(callback) { callback(document.getElementById('scrollable')); }"
21 "url": "http://groupcloned.com/test/plain/list-animation-simple.html",
22 "why": "Brings out layer management bottlenecks.",
23 "smoothness": { "action": "wait", "seconds": 2 }
26 "url": "http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html",
27 "why": "Best-known method for fake sticky. Janks sometimes. Interacts badly with compositor scrolls.",
30 "scrollable_element_function": "function(callback) { callback(document.getElementById('container')); }"
34 "url": "http://jsfiddle.net/3yDKh/4/embedded/result",
35 "why": "Card expansion: only the card should repaint, but in reality lots of storms happen.",
36 "smoothness": { "action": "wait", "seconds": 3 }
39 "url": "http://jsfiddle.net/3yDKh/6/embedded/result",
40 "why": "Card fly-in: It should be fast to animate in a bunch of cards using margin-top and letting layout do the rest.",
41 "smoothness": { "action": "wait", "seconds": 3 }
44 "url": "http://jsfiddle.net/R8DX9/1/embedded/result/",
45 "why": "Image search expands a spacer div when you click an image to accomplish a zoomin effect. Each image has a layer. Even so, this triggers a lot of unnecessary repainting.",
46 "smoothness": { "action": "wait", "seconds": 3 }
49 "url": "http://jsfiddle.net/rF9Gh/3/embedded/result/",
50 "why": "Swipe to dismiss of an element that has a fixed-position child that is its pseudo-sticky header. Brings out issues with layer creation and repainting.",
51 "smoothness": { "action": "wait", "seconds": 3 }
54 "url": "http://jsfiddle.net/humper/yEX8u/3/embedded/result/",
55 "why": "Horizontal and vertical expansion of a card that is cheap to layout but costly to rasterize.",
56 "smoothness": { "action": "wait", "seconds": 4 },
60 "url": "http://jsfiddle.net/humper/cKB9D/3/embedded/result/",
61 "why": "Vertical Expansion of a card that is cheap to layout but costly to rasterize.",
62 "smoothness": { "action": "wait", "seconds": 4 },
66 "url": "http://jsfiddle.net/vBQHH/3/embedded/result/",
67 "why": "Parallax effect is common on photo-viewer-like applications, overloading software rasterization",
68 "smoothness": { "action": "wait", "seconds": 4 },
72 "url": "http://jsfiddle.net/ugkd4/9/embedded/result/",
73 "why": "Addressing paint storms during coordinated animations.",
74 "smoothness": { "action": "wait", "seconds": 5 }
77 "url": "http://jankfree.org/silk/text-mask.html",
78 "why": "Mask transitions are common mobile use cases.",
79 "smoothness": { "action": "wait", "seconds": 4 },
83 "url": "http://jankfree.org/silk/rectangle_transition.html",
84 "why": "Card expansions with images and text are pretty and common.",
85 "smoothness": { "action": "wait", "seconds": 4 },
89 "url": "file://key_silk_cases/font_wipe.html",
90 "why": "Coordinated animations for expanding elements.",
91 "smoothness": { "action": "wait", "seconds": 5 }
94 "url": "file://key_silk_cases/inbox_app.html?swipe_to_dismiss",
97 { "action": "navigate" },
98 { "action": "wait", "seconds": 2 }
101 "action": "swipe_to_dismiss"
103 "swipe_to_dismiss": [
106 "element_function": "function(callback) { callback(document.getElementsByClassName('message')[2]); }",
110 "left_start_percentage": 0.8,
111 "top_start_percentage": 0.2,
113 "javascript": "document.getElementsByClassName('message').length < 18"
119 "url": "file://key_silk_cases/inbox_app.html?stress_hidey_bars",
122 { "action": "navigate" },
123 { "action": "wait", "seconds": 2 }
126 "action": "stress_hidey_bars"
128 "stress_hidey_bars": [
131 "scrollable_element_function": "function(callback) { callback(document.getElementById('messages')); }",
137 "scrollable_element_function": "function(callback) { callback(document.getElementById('messages')); }",
143 "scrollable_element_function": "function(callback) { callback(document.getElementById('messages')); }",
150 "url": "file://key_silk_cases/inbox_app.html?toggle_drawer",
153 { "action": "navigate" },
154 { "action": "wait", "seconds": 2 }
157 "action": "toggle_drawer",
163 "selector": "#menu-button",
164 "wait_after": { "seconds": 1 }
169 "url": "file://key_silk_cases/old_inbox_app.html?slide_drawer",
172 { "action": "navigate" },
173 { "action": "wait", "seconds": 2 }
176 "action": "slide_drawer"
181 "element_function": "function(callback) { callback(document.getElementById('nav-drawer').children[0]); }",
184 "left_start_percentage": 0.8,
185 "top_start_percentage": 0.2,
187 "javascript": "!document.getElementById('nav-drawer').active"
193 "url": "file://key_silk_cases/infinite_scrolling.html",
194 "why": "Shadow DOM infinite scrolling.",
197 "scrollable_element_function": "function(callback) { callback(document.getElementById('container')); }",
202 "url": "http://www.google.com/#q=google",
204 { "action": "navigate" },
205 { "action": "wait", "seconds": 3 },
206 { "action": "scroll_knowledge_card_to_top" }
209 "action": "expand_knowledge_card"
211 "scroll_knowledge_card_to_top": {
213 "_comment": "scroll until the knowledge card is at the top",
214 "scroll_distance_function": "function() { return document.getElementById('kno-result').getBoundingClientRect().top - document.body.scrollTop; }"
216 "expand_knowledge_card": {
218 "_comment": "expand card",
219 "element_function": "function(callback) { callback(document.getElementsByClassName('vk_arc')[0]); }",
220 "wait_after": { "seconds": 2 }
224 "disabled": "Times out on Windows; crbug.com/338838",
225 "url": "http://plus.google.com/app/basic/stream",
226 "credentials": "google",
228 { "action": "navigate" },
229 { "action": "wait", "javascript": "document.getElementsByClassName('fHa').length > 0" },
230 { "action": "wait", "seconds": 2 }
234 "scrollable_element_function": "function(callback) { callback(document.getElementById('mainContent')); }"
238 "url": "http://jsbin.com/UVIgUTa/6/quiet",
239 "why": "Physical simulation demo that does a lot of element.style mutation triggering JS and recalc slowness",
242 "scroll_requires_touch": true,
244 "scroll_distance_function": "function() { return window.innerHeight / 2; }",
245 "wait_after": { "seconds": 1 }
249 "url": "http://mobile-news.sandbox.google.com/news/pt0?scroll",
250 "why": "Google News: this iOS version is slower than accelerated scrolling",
252 { "action": "navigate" },
253 { "action": "wait", "javascript": "document.getElementById(':h') != null" },
254 { "action": "wait", "seconds": 1 }
258 "scroll_requires_touch": true,
259 "scrollable_element_function": "function(callback) { callback(document.getElementById(':5')); }",
260 "scroll_distance_function": "function() { return 2500; }"
264 "url": "http://mobile-news.sandbox.google.com/news/pt0?swipe",
266 { "action": "navigate" },
267 { "action": "wait", "javascript": "document.getElementById(':h') != null" },
268 { "action": "wait", "seconds": 1 }
274 "element_function": "function(callback) { callback(document.getElementById(':f')); }",
275 "wait_after": { "seconds": 1 }
279 "url": "http://s.codepen.io/befamous/fullpage/pFsqb?scroll",
280 "why": "famo.us twitter demo",
282 { "action": "navigate" },
283 { "action": "wait", "javascript": "document.getElementsByClassName('tweet').length > 0" },
284 { "action": "wait", "seconds": 1 }
288 "scroll_distance_function": "function() { return 5000; }"