1 { 2 "description": "Tough scheduler latency test cases", 3 "smoothness": { 4 "action": "scroll" 5 }, 6 "pages": [ 7 { 8 "url": "file://tough_scheduling_cases/simple_text_page.html", 9 "why": "Simple scrolling baseline", 10 "navigate_steps": [ 11 { "action": "navigate" }, 12 { "action": "set_synthetic_delays" } 13 ] 14 }, 15 { 16 "url": "file://tough_scheduling_cases/simple_text_page.html?main_busy", 17 "why": "Simulate oversubscribed main thread", 18 "navigate_steps": [ 19 { "action": "navigate" }, 20 { "action": "set_synthetic_delays", 21 "delays": { 22 "cc.BeginMainFrame": { "target_duration": 0.008 } 23 } 24 } 25 ] 26 }, 27 { 28 "url": "file://tough_scheduling_cases/simple_text_page.html?main_very_busy", 29 "why": "Simulate oversubscribed main thread", 30 "navigate_steps": [ 31 { "action": "navigate" }, 32 { "action": "set_synthetic_delays", 33 "delays": { 34 "cc.BeginMainFrame": { "target_duration": 0.024 } 35 } 36 } 37 ] 38 }, 39 { 40 "url": "file://tough_scheduling_cases/simple_text_page.html?medium_layers", 41 "why": "Simulate a page with a a few graphics layers", 42 "navigate_steps": [ 43 { "action": "navigate" }, 44 { "action": "set_synthetic_delays", 45 "delays": { 46 "cc.BeginMainFrame": { "target_duration": 0.004 }, 47 "cc.DrawAndSwap": { "target_duration": 0.004 }, 48 "gpu.SwapBuffers": { "target_duration": 0.004 } 49 } 50 } 51 ] 52 }, 53 { 54 "url": "file://tough_scheduling_cases/simple_text_page.html?many_layers", 55 "why": "Simulate a page with many graphics layers", 56 "navigate_steps": [ 57 { "action": "navigate" }, 58 { "action": "set_synthetic_delays", 59 "delays": { 60 "cc.BeginMainFrame": { "target_duration": 0.012 }, 61 "cc.DrawAndSwap": { "target_duration": 0.012 }, 62 "gpu.SwapBuffers": { "target_duration": 0.012 } 63 } 64 } 65 ] 66 }, 67 { 68 "url": "file://tough_scheduling_cases/simple_text_page.html?medium_raster", 69 "why": "Simulate a page with expensive recording and rasterization", 70 "navigate_steps": [ 71 { "action": "navigate" }, 72 { "action": "set_synthetic_delays", 73 "delays": { 74 "cc.BeginMainFrame": { "target_duration": 0.004 }, 75 "cc.RasterRequiredForActivation": { "target_duration": 0.004 }, 76 "gpu.AsyncTexImage": { "target_duration": 0.004 } 77 } 78 } 79 ] 80 }, 81 { 82 "url": "file://tough_scheduling_cases/simple_text_page.html?heavy_raster", 83 "why": "Simulate a page with expensive recording and rasterization", 84 "navigate_steps": [ 85 { "action": "navigate" }, 86 { "action": "set_synthetic_delays", 87 "delays": { 88 "cc.BeginMainFrame": { "target_duration": 0.024 }, 89 "cc.RasterRequiredForActivation": { "target_duration": 0.024 }, 90 "gpu.AsyncTexImage": { "target_duration": 0.024 } 91 } 92 } 93 ] 94 }, 95 { 96 "url": "file://tough_scheduling_cases/touch_handler_scrolling.html", 97 "why": "Touch handler scrolling baseline", 98 "navigate_steps": [ 99 { "action": "navigate" }, 100 { "action": "set_synthetic_delays" } 101 ] 102 }, 103 { 104 "url": "file://tough_scheduling_cases/touch_handler_scrolling.html?medium_handler", 105 "why": "Medium cost touch handler", 106 "navigate_steps": [ 107 { "action": "navigate" }, 108 { "action": "set_synthetic_delays", 109 "delays": { 110 "blink.HandleInputEvent": { "target_duration": 0.008 } 111 } 112 } 113 ] 114 }, 115 { 116 "url": "file://tough_scheduling_cases/touch_handler_scrolling.html?slow_handler", 117 "why": "Slow touch handler", 118 "navigate_steps": [ 119 { "action": "navigate" }, 120 { "action": "set_synthetic_delays", 121 "delays": { 122 "blink.HandleInputEvent": { "target_duration": 0.024 } 123 } 124 } 125 ] 126 }, 127 { 128 "url": "file://tough_scheduling_cases/touch_handler_scrolling.html?janky_handler", 129 "why": "Touch handler that often takes a long time", 130 "navigate_steps": [ 131 { "action": "navigate" }, 132 { "action": "set_synthetic_delays", 133 "delays": { 134 "blink.HandleInputEvent": { "target_duration": 0.024, "mode": "alternating" } 135 } 136 } 137 ] 138 }, 139 { 140 "url": "file://tough_scheduling_cases/touch_handler_scrolling.html?occasionally_janky_handler", 141 "why": "Touch handler that occasionally takes a long time", 142 "navigate_steps": [ 143 { "action": "navigate" }, 144 { "action": "set_synthetic_delays", 145 "delays": { 146 "blink.HandleInputEvent": { "target_duration": 0.024, "mode": "oneshot" } 147 } 148 } 149 ] 150 }, 151 { 152 "url": "file://tough_scheduling_cases/touch_handler_scrolling.html?super_slow_handler", 153 "why": "Super expensive touch handler causes browser to scroll after a timeout", 154 "navigate_steps": [ 155 { "action": "navigate" }, 156 { "action": "set_synthetic_delays", 157 "delays": { 158 "blink.HandleInputEvent": { "target_duration": 0.2 } 159 } 160 } 161 ] 162 }, 163 { 164 "url": "file://tough_scheduling_cases/div_touch_handler.html", 165 "why": "Super expensive touch handler that only occupies a part of the page", 166 "navigate_steps": [ 167 { "action": "navigate" }, 168 { "action": "set_synthetic_delays", 169 "delays": { 170 "blink.HandleInputEvent": { "target_duration": 0.2 } 171 } 172 } 173 ] 174 }, 175 { 176 "url": "file://tough_scheduling_cases/raf.html", 177 "why": "requestAnimationFrame scrolling baseline", 178 "navigate_steps": [ 179 { "action": "navigate" }, 180 { "action": "set_synthetic_delays" } 181 ] 182 }, 183 { 184 "url": "file://tough_scheduling_cases/raf_canvas.html", 185 "why": "Test canvas blocking behavior", 186 "navigate_steps": [ 187 { "action": "navigate" }, 188 { "action": "set_synthetic_delays" } 189 ] 190 }, 191 { 192 "url": "file://tough_scheduling_cases/raf.html?medium_handler", 193 "why": "Test a moderately heavy requestAnimationFrame handler", 194 "navigate_steps": [ 195 { "action": "navigate" }, 196 { "action": "set_synthetic_delays", 197 "delays": { 198 "cc.BeginMainFrame": { "target_duration": 0.004 }, 199 "cc.RasterRequiredForActivation": { "target_duration": 0.004 }, 200 "gpu.AsyncTexImage": { "target_duration": 0.004 } 201 } 202 } 203 ] 204 }, 205 { 206 "url": "file://tough_scheduling_cases/raf.html?heavy_handler", 207 "why": "Test a moderately heavy requestAnimationFrame handler", 208 "navigate_steps": [ 209 { "action": "navigate" }, 210 { "action": "set_synthetic_delays", 211 "delays": { 212 "cc.BeginMainFrame": { "target_duration": 0.024 }, 213 "cc.RasterRequiredForActivation": { "target_duration": 0.024 }, 214 "gpu.AsyncTexImage": { "target_duration": 0.024 } 215 } 216 } 217 ] 218 }, 219 { 220 "url": "file://tough_scheduling_cases/raf.html?gpu_bound", 221 "why": "Simulate a heavily GPU bound page", 222 "navigate_steps": [ 223 { "action": "navigate" }, 224 { "action": "set_synthetic_delays", 225 "delays": { 226 "gpu.SwapBuffers": { "target_duration": 0.1 } 227 } 228 } 229 ] 230 }, 231 { 232 "url": "file://tough_scheduling_cases/raf_touch_animation.html", 233 "why": "Stress test for the scheduler", 234 "navigate_steps": [ 235 { "action": "navigate" }, 236 { "action": "set_synthetic_delays" } 237 ] 238 }, 239 { 240 "url": "file://tough_scheduling_cases/raf_touch_animation.html?medium", 241 "why": "Medium stress test for the scheduler", 242 "navigate_steps": [ 243 { "action": "navigate" }, 244 { "action": "set_synthetic_delays", 245 "delays": { 246 "cc.BeginMainFrame": { "target_duration": 0.004 }, 247 "cc.DrawAndSwap": { "target_duration": 0.004 } 248 } 249 } 250 ] 251 }, 252 { 253 "url": "file://tough_scheduling_cases/raf_touch_animation.html?heavy", 254 "why": "Heavy stress test for the scheduler", 255 "navigate_steps": [ 256 { "action": "navigate" }, 257 { "action": "set_synthetic_delays", 258 "delays": { 259 "cc.BeginMainFrame": { "target_duration": 0.012 }, 260 "cc.DrawAndSwap": { "target_duration": 0.012 } 261 } 262 } 263 ] 264 } 265 ] 266 } 267