• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Describes the tasks we run in the continuous integration (CI) environment.
2#
3# Cocoon[1] uses this file to generate a checklist of tasks to be performed for
4# every master commit.
5#
6# [1] github.com/flutter/cocoon
7
8# CI tasks.
9#
10# Each key in this dictionary is the unique name of a task, which also
11# corresponds to a file in the "bin/" directory that the task runner will run.
12#
13# Required properties:
14#
15# * description: free form string
16#       describes what the task is about
17# * stage: one of "devicelab", "devicelab_ios", "devicelab_win"
18#       tasks are grouped by stage so they appear next to each on the dashboard and have a distinct
19#       icon attached to them. Stages can be used to create dependencies, e.g. we may decide to not
20#       run device tests on red Cirrus builds.
21# * required_agent_capabilities: a list of strings
22#       list of capabilities a devicelab agent must have to be able to run this task.
23#
24# Optional properties:
25#
26# * flaky: boolean true or false
27#       whether the task is considered flaky; the result of running a flaky task does not affect
28#       the overall build status. Tests should be marked flaky when newly added, until they have
29#       been proved for a few cycles. Tests that are actually flaky but not being actively worked
30#       on should be hidden because they just cause confusion otherwise.
31# * timeout_in_minutes: integer
32#       a custom task timeout, specified in minutes.
33
34tasks:
35  # Tests of compiling in a variety of modes
36
37  complex_layout_android__compile:
38    description: >
39      Collects various performance metrics of compiling the Complex
40      Layout sample app for Android from Linux.
41    stage: devicelab
42    required_agent_capabilities: ["linux/android"]
43
44  complex_layout_ios__compile:
45    description: >
46      Collects various performance metrics of compiling the Complex
47      Layout sample app for iOS from Mac.
48    stage: devicelab_ios
49    required_agent_capabilities: ["mac/ios"]
50
51  complex_layout_win__compile:
52    description: >
53      Collects various performance metrics of compiling the Complex
54      Layout for Android from Windows.
55    stage: devicelab_win
56    required_agent_capabilities: ["windows/android"]
57
58  basic_material_app_android__compile:
59    description: >
60      Collects various performance metrics of compiling the default
61      app for Android from Linux.
62    stage: devicelab
63    required_agent_capabilities: ["linux/android"]
64
65  basic_material_app_ios__compile:
66    description: >
67      Collects various performance metrics of compiling the default
68      app for iOS from Mac.
69    stage: devicelab_ios
70    required_agent_capabilities: ["mac/ios"]
71
72  basic_material_app_win__compile:
73    description: >
74      Collects various performance metrics of compiling the default
75      app for Android from Windows.
76    stage: devicelab_win
77    required_agent_capabilities: ["windows/android"]
78
79  codegen_integration_win:
80    description: >
81      Runs codegeneration and verifies that it can execute
82      correctly.
83    stage: devicelab_win
84    required_agent_capabilities: ["windows/android"]
85
86  codegen_integration_mac:
87    description: >
88      Runs codegeneration and verifies that it can execute
89      correctly.
90    stage: devicelab_ios
91    required_agent_capabilities: ["mac/ios"]
92
93  codegen_integration_linux:
94    description: >
95      Runs codegeneration and verifies that it can execute
96      correctly.
97    stage: devicelab
98    required_agent_capabilities: ["linux/android"]
99
100  uncaught_image_error_linux:
101    description: >
102      Ensures that an error thrown into the zone can be caught by the ImageStream
103      completer
104    stage: devicelab
105    required_agent_capabilities: ["linux/android"]
106
107  flutter_gallery_android__compile:
108    description: >
109      Collects various performance metrics of compiling the Flutter
110      Gallery for Android from Linux.
111    stage: devicelab
112    required_agent_capabilities: ["linux/android"]
113
114  flutter_gallery_ios__compile:
115    description: >
116      Collects various performance metrics of compiling the Flutter
117      Gallery for iOS from Mac.
118    stage: devicelab_ios
119    required_agent_capabilities: ["mac/ios"]
120
121  flutter_gallery_win__compile:
122    description: >
123      Collects various performance metrics of compiling the Flutter
124      Gallery for Android from Windows.
125    stage: devicelab_win
126    required_agent_capabilities: ["windows/android"]
127
128  windows_chrome_dev_mode:
129    description: >
130      Run flutter web on the devicelab and hot restart.
131    stage: devicelab_win
132    required_agent_capabilities: ["windows/android"]
133    flaky: true
134
135  # Android on-device tests
136
137  complex_layout_scroll_perf__timeline_summary:
138    description: >
139      Measures the runtime performance of the Complex Layout sample app on
140      Android.
141    stage: devicelab
142    required_agent_capabilities: ["mac/android"]
143
144  tiles_scroll_perf__timeline_summary:
145    description: >
146      Measures the runtime performance of the tiles tab in the Complex Layout sample app on Android.
147    stage: devicelab
148    required_agent_capabilities: ["mac/android"]
149
150  tiles_scroll_perf_ios__timeline_summary:
151    description: >
152      Measures the runtime performance of the tiles tab in the Complex Layout sample app on iPhone 6.
153    stage: devicelab_ios
154    required_agent_capabilities: ["mac/ios"]
155
156  tiles_scroll_perf_iphonexs__timeline_summary:
157    description: >
158      Measures the runtime performance of the tiles tab in the Complex Layout sample app on iPhone XS.
159    stage: devicelab_ios
160    required_agent_capabilities: ["mac/iphonexs"]
161
162  home_scroll_perf__timeline_summary:
163    description: >
164      Measures the runtime performance of scrolling the material page in the
165      flutter_gallery app on Android.
166    stage: devicelab
167    required_agent_capabilities: ["mac/android"]
168
169  drive_perf_debug_warning:
170    description: >
171      Check that driver will print warnings when traceAction is called in debug mode.
172    stage: devicelab
173    required_agent_capabilities: ["mac/android"]
174
175  cull_opacity_perf__timeline_summary:
176    description: >
177      Measures the runtime performance of culling opacity widgets on Android.
178    stage: devicelab
179    required_agent_capabilities: ["mac/android"]
180
181  cubic_bezier_perf__timeline_summary:
182    description: >
183      Measures the runtime performance of cubic bezier animations on Android.
184    stage: devicelab
185    required_agent_capabilities: ["mac/android"]
186
187  backdrop_filter_perf__timeline_summary:
188    description: >
189      Measures the runtime performance of backdrop filter blurs on Android.
190    stage: devicelab
191    required_agent_capabilities: ["mac/android"]
192
193  flavors_test:
194    description: >
195      Checks that flavored builds work on Android.
196    stage: devicelab
197    required_agent_capabilities: ["mac/android"]
198
199  channels_integration_test:
200    description: >
201      Checks that platform channels work on Android.
202    stage: devicelab
203    required_agent_capabilities: ["mac/android"]
204
205  external_ui_integration_test:
206    description: >
207      Checks that external UIs work on Android.
208    stage: devicelab
209    required_agent_capabilities: ["mac/android"]
210
211  embedded_android_views_integration_test:
212    description: >
213      Tests embedded Android views.
214    stage: devicelab
215    required_agent_capabilities: ["mac/android"]
216
217  android_semantics_integration_test:
218    description: >
219      Tests that the Android accessibility bridge produces correct semantics.
220    stage: devicelab
221    required_agent_capabilities: ["mac/android"]
222
223  run_release_test:
224    description: >
225      Checks that `flutter run --release` does not crash.
226    stage: devicelab
227    required_agent_capabilities: ["mac/android"]
228
229  platform_interaction_test:
230    description: >
231      Checks platform interaction on Android.
232    stage: devicelab
233    required_agent_capabilities: ["mac/android"]
234
235  platform_channel_sample_test:
236    description: >
237     Runs a driver test on the Platform Channel sample app on Android.
238    stage: devicelab
239    required_agent_capabilities: ["mac/android"]
240
241  platform_view__start_up:
242    description: >
243      Verifies that Platform View can be used from an Android project.
244    stage: devicelab
245    required_agent_capabilities: ["mac/android"]
246
247  complex_layout__start_up:
248    description: >
249      Measures the startup time of the Complex Layout sample app on Android.
250    stage: devicelab
251    required_agent_capabilities: ["mac/android"]
252
253  hot_mode_dev_cycle__benchmark:
254    description: >
255      Measures the performance of Dart VM hot patching feature.
256    stage: devicelab
257    required_agent_capabilities: ["mac/android"]
258
259  complex_layout_scroll_perf__memory:
260    description: >
261      Measures memory usage of the scroll performance test.
262    stage: devicelab
263    required_agent_capabilities: ["mac/android"]
264
265  hello_world_android__compile:
266    description: >
267      Measures the APK size of Hello World.
268    stage: devicelab
269    required_agent_capabilities: ["mac/android"]
270
271  hello_world__memory:
272    description: >
273      Measures starting memory usage of the simplest Flutter app.
274    stage: devicelab
275    required_agent_capabilities: ["mac/android"]
276
277  # hello_world__start_up:
278  #   description: >
279  #     Verifies that Hello World can start on an array of devices.
280  #   stage: devicelab
281  #   required_agent_capabilities: ["linux/android_esoteric"]
282
283  microbenchmarks:
284    description: >
285      Runs benchmarks from dev/benchmarks/microbenchmarks.
286    stage: devicelab
287    required_agent_capabilities: ["mac/android"]
288    timeout_in_minutes: 30
289
290  flutter_view__start_up:
291    description: >
292      Verifies that Flutter View can be used from an Android project.
293    stage: devicelab
294    required_agent_capabilities: ["mac/android"]
295
296  integration_ui:
297    description: >
298      Runs end-to-end Flutter tests on Android.
299    stage: devicelab
300    required_agent_capabilities: ["mac/android"]
301
302  commands_test:
303    description: >
304      Runs tests of flutter run commands.
305    stage: devicelab
306    required_agent_capabilities: ["mac/android"]
307
308  run_machine_concurrent_hot_reload:
309    description: >
310      Runs tests of concurrent hot reload commands via flutter run --machine.
311    stage: devicelab
312    required_agent_capabilities: ["mac/android"]
313
314  service_extensions_test:
315    description: >
316      Validates our service protocol extensions.
317    stage: devicelab
318    required_agent_capabilities: ["mac/android"]
319
320  android_sample_catalog_generator:
321    description: >
322      Builds sample catalog markdown pages and Android screenshots
323    stage: devicelab
324    required_agent_capabilities: ["mac/android"]
325
326  complex_layout_semantics_perf:
327    description: >
328      Measures duration of building the initial semantics tree.
329    stage: devicelab
330    required_agent_capabilities: ["linux/android"]
331
332  routing_test:
333    description: >
334      Verifies that `flutter drive --route` still works. No performance numbers.
335    stage: devicelab
336    required_agent_capabilities: ["linux/android"]
337
338  flutter_gallery_instrumentation_test:
339    description: >
340      Same as flutter_gallery__transition_perf but uses Android instrumentation
341      framework, and therefore does not require a host computer to run. This
342      test can run on off-the-shelf infrastructures, such as Firebase Test Lab.
343    stage: devicelab
344    required_agent_capabilities: ["linux/android"]
345    flaky: true
346
347  flutter_attach_test:
348    description: >
349      Tests the `flutter attach` command.
350    stage: devicelab
351    required_agent_capabilities: ["linux/android"]
352
353  named_isolates_test:
354    description: >
355      Tests naming and attaching to specific isolates.
356    stage: devicelab
357    required_agent_capabilities: ["linux/android"]
358
359  linux_chrome_dev_mode:
360    description: >
361      Run flutter web on the devicelab and hot restart.
362    stage: devicelab
363    required_agent_capabilities: ["linux/android"]
364    flaky: true
365
366  web_size__compile_test:
367    description: >
368      Measures the size of a dart2js bundle.
369    stage: devicelab
370    required_agent_capabilities: ["linux/android"]
371
372  image_list_reported_duration:
373    description: >
374      Measures image loading performance on release (aot) build.
375    stage: devicelab
376    required_agent_capabilities: ["linux/android"]
377
378  image_list_jit_reported_duration:
379    description: >
380      Measures image loading performance on debug (jit) build.
381    stage: devicelab
382    required_agent_capabilities: ["linux/android"]
383
384  build_benchmark:
385    description: >
386      Measures APK build performance across config changes.
387    stage: devicelab
388    required_agent_capabilities: ["linux/android"]
389
390  # iOS on-device tests
391
392  flavors_test_ios:
393    description: >
394      Checks that flavored builds work on iPhone 6.
395    stage: devicelab_ios
396    required_agent_capabilities: ["mac/ios"]
397
398  external_ui_integration_test_ios:
399    description: >
400      Checks that external UIs work on iPhone 6.
401    stage: devicelab_ios
402    required_agent_capabilities: ["mac/ios"]
403
404  channels_integration_test_ios:
405    description: >
406      Checks that platform channels work on iPhone 6.
407    stage: devicelab_ios
408    required_agent_capabilities: ["mac/ios"]
409
410  platform_interaction_test_ios:
411    description: >
412      Checks platform interaction on iPhone 6.
413    stage: devicelab_ios
414    required_agent_capabilities: ["mac/ios"]
415
416  platform_channel_sample_test_ios:
417    description: >
418      Runs a driver test on the Platform Channel sample app on iPhone 6 Objective-C project.
419    stage: devicelab_ios
420    required_agent_capabilities: ["mac/ios"]
421
422  platform_channel_sample_test_swift:
423    description: >
424      Runs a driver test on the Platform Channel sample app on iPhone 6 Swift project.
425    stage: devicelab_ios
426    required_agent_capabilities: ["mac/ios"]
427
428  platform_view_ios__start_up:
429    description: >
430      Verifies that Platform View can be used from an iOS project.
431    stage: devicelab_ios
432    required_agent_capabilities: ["mac/ios"]
433
434  complex_layout_scroll_perf_ios__timeline_summary:
435    description: >
436      Measures the runtime performance of the Complex Layout sample app on
437      iOS.
438    stage: devicelab_ios
439    required_agent_capabilities: ["mac/ios"]
440
441  flutter_gallery_ios__start_up:
442    description: >
443      Measures the startup time of the Flutter Gallery app on iPhone 6.
444    stage: devicelab_ios
445    required_agent_capabilities: ["mac/ios"]
446
447  complex_layout_ios__start_up:
448    description: >
449      Measures the startup time of the Complex Layout sample app on iPhone 6.
450    stage: devicelab_ios
451    required_agent_capabilities: ["mac/ios"]
452
453  flutter_gallery_ios__transition_perf:
454    description: >
455      Measures the performance of screen transitions in Flutter Gallery on
456      iOS.
457    stage: devicelab_ios
458    required_agent_capabilities: ["mac/ios"]
459
460  hello_world_ios__compile:
461    description: >
462      Measures the IPA size of Hello World.
463    stage: devicelab_ios
464    required_agent_capabilities: ["mac/ios"]
465
466  microbenchmarks_ios:
467    description: >
468      Runs benchmarks from dev/benchmarks/microbenchmarks on iPhone 6.
469    stage: devicelab_ios
470    required_agent_capabilities: ["mac/ios"]
471    timeout_in_minutes: 30
472
473  flutter_view_ios__start_up:
474    description: >
475      Verifies that Flutter View can be used from an iOS project.
476    stage: devicelab_ios
477    flaky: true
478    required_agent_capabilities: ["mac/ios"]
479
480  integration_ui_ios:
481    description: >
482      Runs end-to-end Flutter tests on iPhone 6.
483    stage: devicelab_ios
484    required_agent_capabilities: ["mac/ios"]
485    timeout_in_minutes: 20
486
487  system_debug_ios:
488    description: >
489      Tests that the Engine correctly initializes the system debugger for debug-mode iOS apps.
490    stage: devicelab_ios
491    required_agent_capabilities: ["mac/ios"]
492    timeout_in_minutes: 10
493
494  ios_sample_catalog_generator:
495    description: >
496      Builds sample catalog markdown pages and iOS screenshots
497    stage: devicelab_ios
498    required_agent_capabilities: ["mac/ios"]
499
500  macos_chrome_dev_mode:
501    description: >
502      Run flutter web on the devicelab and hot restart.
503    stage: devicelab_ios
504    required_agent_capabilities: ["mac/ios"]
505    flaky: true # marekd as flaky while infra is under heavy development
506
507  build_benchmark_ios:
508    description: >
509      Measures iOS build performance across config changes.
510    stage: devicelab_ios
511    required_agent_capabilities: ["mac/ios"]
512
513  smoke_catalina_start_up:
514    description: >
515      A smoke test that runs on macOS Catalina, which is a clone of the Gallery startup latency test.
516    stage: devicelab_ios
517    flaky: true
518    required_agent_capabilities: ["mac-catalina/ios"]
519
520  smoke_catalina_hot_mode_dev_cycle__benchmark:
521    description: >
522      A some test that runs on macOS Catalina, which is a clone of the Dart VM hot patching performance benchmarking.
523    stage: devicelab_ios
524    flaky: true
525    required_agent_capabilities: ["mac-catalina/ios"]
526
527  # Tests running on Windows host
528
529  flavors_test_win:
530    description: >
531      Checks that flavored builds work on Windows.
532    stage: devicelab_win
533    required_agent_capabilities: ["windows/android"]
534
535  channels_integration_test_win:
536    description: >
537      Checks that platform channels work when app is launched from Windows.
538    stage: devicelab_win
539    required_agent_capabilities: ["windows/android"]
540
541  plugin_test_win:
542    description: >
543      Checks that the project template works and supports plugins on Windows.
544    stage: devicelab_win
545    required_agent_capabilities: ["windows/android"]
546
547  hot_mode_dev_cycle_win__benchmark:
548    description: >
549      Measures the performance of Dart VM hot patching feature on Windows.
550    stage: devicelab_win
551    required_agent_capabilities: ["windows/android"]
552
553  run_without_leak_win:
554    description: >
555      Checks that `flutter run` does not leak dart.exe on Windows.
556    stage: devicelab_win
557    required_agent_capabilities: ["windows/android"]
558
559  # Tests running on Linux hosts
560
561  hot_mode_dev_cycle_linux__benchmark:
562    description: >
563      Measures the performance of Dart VM hot patching feature on a Linux host.
564    stage: devicelab
565    required_agent_capabilities: ["linux/android"]
566
567  flutter_test_performance:
568    description: >
569      Measures performance of running flutter test.
570    stage: devicelab
571    required_agent_capabilities: ["linux/android"]
572
573  technical_debt__cost:
574    description: >
575      Estimates our technical debt (TODOs, analyzer ignores, etc).
576    stage: devicelab
577    required_agent_capabilities: ["linux/android"]
578
579  flutter_gallery__start_up:
580    description: >
581      Measures the startup time of the Flutter Gallery app on Android.
582    stage: devicelab
583    required_agent_capabilities: ["linux/android"]
584
585  flutter_gallery__transition_perf:
586    description: >
587      Measures the performance of screen transitions in Flutter Gallery on
588      Android.
589    stage: devicelab
590    flaky: true
591    required_agent_capabilities: ["linux/android"]
592
593  flutter_gallery__transition_perf_with_semantics:
594    description: >
595      Measures the delta in performance of screen transitions without and
596      with semantics enabled.
597    stage: devicelab
598    flaky: true
599    required_agent_capabilities: ["linux/android"]
600
601  flutter_gallery__memory_nav:
602    description: >
603      Measures memory usage after repeated navigation in Gallery.
604    stage: devicelab
605    required_agent_capabilities: ["linux/android"]
606
607  flutter_gallery__back_button_memory:
608    description: >
609      Measures memory usage after Android app suspend and resume.
610    stage: devicelab
611    required_agent_capabilities: ["linux/android"]
612
613  flutter_gallery__image_cache_memory:
614    description: >
615      Measures memory usage for a list of large red squares in smaller containers.
616    stage: devicelab
617    required_agent_capabilities: ["linux/android"]
618
619  analyzer_benchmark:
620    description: >
621      Measures the speed of Dart analyzer.
622    stage: devicelab
623    required_agent_capabilities: ["linux/android"]
624
625  run_without_leak_linux:
626    description: >
627      Checks that `flutter run` does not leak dart on Linux.
628    stage: devicelab
629    required_agent_capabilities: ["linux/android"]
630    flaky: true
631
632  flutter_gallery_ios32__start_up:
633    description: >
634      Measures the startup time of the Flutter Gallery app on 32-bit iOS (iPhone 4S).
635    stage: devicelab_ios
636    required_agent_capabilities: ["mac/ios32"]
637
638  flutter_gallery_ios32__transition_perf:
639    description: >
640      Measures the performance of screen transitions in Flutter Gallery on
641      32-bit iOS (iPhone 4S).
642    stage: devicelab_ios
643    required_agent_capabilities: ["mac/ios32"]
644
645  run_without_leak_mac:
646    description: >
647      Checks that `flutter run` does not leak dart on macOS.
648    stage: devicelab
649    required_agent_capabilities: ["mac/android"]
650    flaky: true
651
652  android_splash_screen_integration_test:
653    description: >
654      Runs end-to-end test of Flutter's Android splash behavior.
655    stage: devicelab
656    required_agent_capabilities: ["linux/android"]
657    flaky: true
658