# Describes the tasks we run in the continuous integration (CI) environment.
#
# Cocoon[1] uses this file to generate a checklist of tasks to be performed for
# every master commit.
#
# [1] github.com/flutter/cocoon

# CI tasks.
#
# Each key in this dictionary is the unique name of a task, which also
# corresponds to a file in the "bin/" directory that the task runner will run.
#
# Required properties:
#
# * description: free form string
#       describes what the task is about
# * stage: one of "devicelab", "devicelab_ios", "devicelab_win"
#       tasks are grouped by stage so they appear next to each on the dashboard and have a distinct
#       icon attached to them. Stages can be used to create dependencies, e.g. we may decide to not
#       run device tests on red Cirrus builds.
# * required_agent_capabilities: a list of strings
#       list of capabilities a devicelab agent must have to be able to run this task.
#
# Optional properties:
#
# * flaky: boolean true or false
#       whether the task is considered flaky; the result of running a flaky task does not affect
#       the overall build status. Tests should be marked flaky when newly added, until they have
#       been proved for a few cycles. Tests that are actually flaky but not being actively worked
#       on should be hidden because they just cause confusion otherwise.
# * timeout_in_minutes: integer
#       a custom task timeout, specified in minutes.

tasks:
  # Tests of compiling in a variety of modes

  complex_layout_android__compile:
    description: >
      Collects various performance metrics of compiling the Complex
      Layout sample app for Android from Linux.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  complex_layout_ios__compile:
    description: >
      Collects various performance metrics of compiling the Complex
      Layout sample app for iOS from Mac.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  complex_layout_win__compile:
    description: >
      Collects various performance metrics of compiling the Complex
      Layout for Android from Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  basic_material_app_android__compile:
    description: >
      Collects various performance metrics of compiling the default
      app for Android from Linux.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  basic_material_app_ios__compile:
    description: >
      Collects various performance metrics of compiling the default
      app for iOS from Mac.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  basic_material_app_win__compile:
    description: >
      Collects various performance metrics of compiling the default
      app for Android from Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  # TODO(jonahwilliams): re-enable with https://github.com/flutter/flutter/issues/39597
  # codegen_integration_win:
  #   description: >
  #     Runs codegeneration and verifies that it can execute
  #     correctly.
  #   stage: devicelab_win
  #   required_agent_capabilities: ["windows/android"]

  codegen_integration_mac:
    description: >
      Runs codegeneration and verifies that it can execute
      correctly.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  codegen_integration_linux:
    description: >
      Runs codegeneration and verifies that it can execute
      correctly.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  uncaught_image_error_linux:
    description: >
      Ensures that an error thrown into the zone can be caught by the ImageStream
      completer
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery_android__compile:
    description: >
      Collects various performance metrics of compiling the Flutter
      Gallery for Android from Linux.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery_ios__compile:
    description: >
      Collects various performance metrics of compiling the Flutter
      Gallery for iOS from Mac.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  flutter_gallery_win__compile:
    description: >
      Collects various performance metrics of compiling the Flutter
      Gallery for Android from Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  windows_chrome_dev_mode:
    description: >
      Run flutter web on the devicelab and hot restart.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]
    flaky: true

  # Android on-device tests

  complex_layout_scroll_perf__timeline_summary:
    description: >
      Measures the runtime performance of the Complex Layout sample app on
      Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  tiles_scroll_perf__timeline_summary:
    description: >
      Measures the runtime performance of the tiles tab in the Complex Layout sample app on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  home_scroll_perf__timeline_summary:
    description: >
      Measures the runtime performance of scrolling the material page in the
      flutter_gallery app on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  drive_perf_debug_warning:
    description: >
      Check that driver will print warnings when traceAction is called in debug mode.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  cull_opacity_perf__timeline_summary:
    description: >
      Measures the runtime performance of culling opacity widgets on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  picture_cache_perf__timeline_summary:
    description: >
      Measures the runtime performance of raster caching many pictures on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  cubic_bezier_perf__timeline_summary:
    description: >
      Measures the runtime performance of cubic bezier animations on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  backdrop_filter_perf__timeline_summary:
    description: >
      Measures the runtime performance of backdrop filter blurs on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  flavors_test:
    description: >
      Checks that flavored builds work on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  channels_integration_test:
    description: >
      Checks that platform channels work on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  external_ui_integration_test:
    description: >
      Checks that external UIs work on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  embedded_android_views_integration_test:
    description: >
      Tests embedded Android views.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  android_semantics_integration_test:
    description: >
      Tests that the Android accessibility bridge produces correct semantics.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  run_release_test:
    description: >
      Checks that `flutter run --release` does not crash.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]
    flaky: true # https://github.com/flutter/flutter/issues/45416.

  platform_interaction_test:
    description: >
      Checks platform interaction on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  platform_channel_sample_test:
    description: >
     Runs a driver test on the Platform Channel sample app on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  platform_view__start_up:
    description: >
      Verifies that Platform View can be used from an Android project.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  complex_layout__start_up:
    description: >
      Measures the startup time of the Complex Layout sample app on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  hot_mode_dev_cycle__benchmark:
    description: >
      Measures the performance of Dart VM hot patching feature.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  complex_layout_scroll_perf__memory:
    description: >
      Measures memory usage of the scroll performance test.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  hello_world_android__compile:
    description: >
      Measures the APK size of Hello World.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  hello_world__memory:
    description: >
      Measures starting memory usage of the simplest Flutter app.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  # hello_world__start_up:
  #   description: >
  #     Verifies that Hello World can start on an array of devices.
  #   stage: devicelab
  #   required_agent_capabilities: ["linux/android_esoteric"]

  microbenchmarks:
    description: >
      Runs benchmarks from dev/benchmarks/microbenchmarks.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]
    timeout_in_minutes: 30

  flutter_view__start_up:
    description: >
      Verifies that Flutter View can be used from an Android project.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  integration_ui:
    description: >
      Runs end-to-end Flutter tests on Android.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  commands_test:
    description: >
      Runs tests of flutter run commands.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  run_machine_concurrent_hot_reload:
    description: >
      Runs tests of concurrent hot reload commands via flutter run --machine.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  service_extensions_test:
    description: >
      Validates our service protocol extensions.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  android_sample_catalog_generator:
    description: >
      Builds sample catalog markdown pages and Android screenshots
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  complex_layout_semantics_perf:
    description: >
      Measures duration of building the initial semantics tree.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  routing_test:
    description: >
      Verifies that `flutter drive --route` still works. No performance numbers.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  # flutter_gallery_instrumentation_test:
  #   description: >
  #     Same as flutter_gallery__transition_perf but uses Android instrumentation
  #     framework, and therefore does not require a host computer to run. This
  #     test can run on off-the-shelf infrastructures, such as Firebase Test Lab.
  #   stage: devicelab
  #   required_agent_capabilities: ["linux/android"]
  #   flaky: true

  flutter_attach_test_android:
    description: >
      Tests the `flutter attach` command.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  named_isolates_test:
    description: >
      Tests naming and attaching to specific isolates.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  linux_chrome_dev_mode:
    description: >
      Run flutter web on the devicelab and hot restart.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]
    flaky: true

  web_size__compile_test:
    description: >
      Measures the size of a dart2js bundle.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  image_list_reported_duration:
    description: >
      Measures image loading performance on release (aot) build.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  image_list_jit_reported_duration:
    description: >
      Measures image loading performance on debug (jit) build.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  build_benchmark:
    description: >
      Measures APK build performance across config changes.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  time_to_development_benchmark__android:
    description: >
      Measures time from flutter run until resident runner setup is complete.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  # iOS on-device tests

  tiles_scroll_perf_ios__timeline_summary:
    description: >
      Measures the runtime performance of the tiles tab in the Complex Layout sample app on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  tiles_scroll_perf_iphonexs__timeline_summary:
    description: >
      Measures the runtime performance of the tiles tab in the Complex Layout sample app on iPhone XS.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/iphonexs"]

  flutter_gallery_ios32__start_up:
    description: >
      Measures the startup time of the Flutter Gallery app on 32-bit iOS (iPhone 4S).
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios32"]

  flutter_gallery_ios32__transition_perf:
    description: >
      Measures the performance of screen transitions in Flutter Gallery on
      32-bit iOS (iPhone 4S).
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios32"]

  flavors_test_ios:
    description: >
      Checks that flavored builds work on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  external_ui_integration_test_ios:
    description: >
      Checks that external UIs work on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  channels_integration_test_ios:
    description: >
      Checks that platform channels work on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  platform_interaction_test_ios:
    description: >
      Checks platform interaction on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  platform_channel_sample_test_ios:
    description: >
      Runs a driver test on the Platform Channel sample app on iPhone 6 Objective-C project.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  platform_channel_sample_test_swift:
    description: >
      Runs a driver test on the Platform Channel sample app on iPhone 6 Swift project.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  platform_view_ios__start_up:
    description: >
      Verifies that Platform View can be used from an iOS project.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  backdrop_filter_perf_ios__timeline_summary:
    description: >
      Measures the runtime performance of backdrop filter blurs on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  post_backdrop_filter_perf_ios__timeline_summary:
    description: >
      Measures the runtime performance of animations after a backdrop filter is removed on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/iphonexs"]

  complex_layout_scroll_perf_ios__timeline_summary:
    description: >
      Measures the runtime performance of the Complex Layout sample app on
      iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  flutter_gallery_ios__start_up:
    description: >
      Measures the startup time of the Flutter Gallery app on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  complex_layout_ios__start_up:
    description: >
      Measures the startup time of the Complex Layout sample app on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  flutter_gallery_ios__transition_perf:
    description: >
      Measures the performance of screen transitions in Flutter Gallery on
      iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  hello_world_ios__compile:
    description: >
      Measures the IPA size of Hello World.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  microbenchmarks_ios:
    description: >
      Runs benchmarks from dev/benchmarks/microbenchmarks on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]
    timeout_in_minutes: 30

  flutter_view_ios__start_up:
    description: >
      Verifies that Flutter View can be used from an iOS project.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  integration_ui_ios:
    description: >
      Runs end-to-end Flutter tests on iPhone 6.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]
    timeout_in_minutes: 20

  flutter_driver_screenshot_test_ios:
    description: >
      Screenshot tests running on a specifc iPhone 6.
      The test makes sure that there is no regression while renderring an image with gl on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios", "ios/gl-render-image"]
    #TODO(cyanglaz): The flaky flag is added because it is the first screenshot test we added.
    # Remove the flaky flag when we are sure the test is stable.
    flaky: true

  # TODO(fujino): does not pass on iOS13 https://github.com/flutter/flutter/issues/41133
  # system_debug_ios:
  #   description: >
  #     Tests that the Engine correctly initializes the system debugger for debug-mode iOS apps.
  #   stage: devicelab_ios
  #   required_agent_capabilities: ["mac/ios"]
  #   timeout_in_minutes: 10

  ios_sample_catalog_generator:
    description: >
      Builds sample catalog markdown pages and iOS screenshots
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  macos_chrome_dev_mode:
    description: >
      Run flutter web on the devicelab and hot restart.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]
    flaky: true # marked as flaky while infra is under heavy development

  build_benchmark_ios:
    description: >
      Measures iOS build performance across config changes.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/ios"]

  simple_animation_perf_iphonexs:
    description: >
      Measure CPU/GPU usage percentages of a simple animation.
    stage: devicelab_ios
    required_agent_capabilities: ["mac/iphonexs"]

  smoke_catalina_start_up_ios:
    description: >
      A smoke test that runs on macOS Catalina, which is a clone of the Gallery startup latency test.
    stage: devicelab_ios
    required_agent_capabilities: ["mac-catalina/ios"]

  smoke_catalina_hot_mode_dev_cycle_ios__benchmark:
    description: >
      A some test that runs on macOS Catalina, which is a clone of the Dart VM hot patching performance benchmarking.
    stage: devicelab_ios
    required_agent_capabilities: ["mac-catalina/ios"]

  smoke_catalina_start_up:
    description: >
      A smoke test that runs on macOS Catalina, which is a clone of the Gallery startup latency test.
    stage: devicelab
    required_agent_capabilities: ["mac-catalina/android"]

  smoke_catalina_hot_mode_dev_cycle__benchmark:
    description: >
      A some test that runs on macOS Catalina, which is a clone of the Dart VM hot patching performance benchmarking.
    stage: devicelab
    required_agent_capabilities: ["mac-catalina/android"]

  # macOS target platform tests
  hot_mode_dev_cycle_macos_target__benchmark:
    description: >
      Checks the functionality and performance of hot reload on a macOS target platform
    stage: devicelab
    required_agent_capabilities: ["mac/ios"]
    flaky: true

  # Tests running on Windows host

  flavors_test_win:
    description: >
      Checks that flavored builds work on Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  channels_integration_test_win:
    description: >
      Checks that platform channels work when app is launched from Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  plugin_test_win:
    description: >
      Checks that the project template works and supports plugins on Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  hot_mode_dev_cycle_win__benchmark:
    description: >
      Measures the performance of Dart VM hot patching feature on Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows/android"]

  # run_without_leak_win:
  #   description: >
  #     Checks that `flutter run` does not leak dart.exe on Windows.
  #   stage: devicelab_win
  #   required_agent_capabilities: ["windows/android"]

  # Tests running on Linux hosts

  hot_mode_dev_cycle_linux__benchmark:
    description: >
      Measures the performance of Dart VM hot patching feature on a Linux host.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_test_performance:
    description: >
      Measures performance of running flutter test.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  dartdocs:
    description: >
      Tracks how many members are still lacking documentation.
    stage: devicelab
    required_agent_capabilities: ["linux-vm"]

  technical_debt__cost:
    description: >
      Estimates our technical debt (TODOs, analyzer ignores, etc).
    stage: devicelab
    required_agent_capabilities: ["linux-vm"]

  flutter_gallery__start_up:
    description: >
      Measures the startup time of the Flutter Gallery app on Android.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery__transition_perf:
    description: >
      Measures the performance of screen transitions in Flutter Gallery on
      Android.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery__transition_perf_with_semantics:
    description: >
      Measures the delta in performance of screen transitions without and
      with semantics enabled.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery__memory_nav:
    description: >
      Measures memory usage after repeated navigation in Gallery.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery__back_button_memory:
    description: >
      Measures memory usage after Android app suspend and resume.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  flutter_gallery__image_cache_memory:
    description: >
      Measures memory usage for a list of large red squares in smaller containers.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  fast_scroll_large_images__memory:
    description: >
      Measures memory usage for scrolling through a list of large images.
    stage: devicelab
    required_agent_capabilities: ["mac/android"]

  analyzer_benchmark:
    description: >
      Measures the speed of Dart analyzer.
    stage: devicelab
    required_agent_capabilities: ["linux/android"]

  # run_without_leak_linux:
  #   description: >
  #     Checks that `flutter run` does not leak dart on Linux.
  #   stage: devicelab
  #   required_agent_capabilities: ["linux/android"]
  #   flaky: true

  # run_without_leak_mac:
  #   description: >
  #     Checks that `flutter run` does not leak dart on macOS.
  #   stage: devicelab
  #   required_agent_capabilities: ["mac/android"]
  #   flaky: true

  # android_splash_screen_integration_test:
  #   description: >
  #     Runs end-to-end test of Flutter's Android splash behavior.
  #   stage: devicelab
  #   required_agent_capabilities: ["linux/android"]
  #   flaky: true
