# 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.
#
# Due to historic reasons that may go away at some point, the suffix of the task
# name is significant. It is used by the dashboard to pick the right HTML
# template to display the results in a card. If you use a known name suffix also
# make sure that your task outputs data in the expected format for that card.
#
# Known suffixes:
#
# __analysis_time:
#     Analyzer performance benchmarks.
# __refresh_time:
#     Edit refresh cycle benchmarks.
# __start_up:
#     Application startup speed benchmarks.
# __timeline_summary:
#     Per-frame timings and missed/average/total counts.
# __transition_perf:
#     Flutter Gallery app transitions benchmark.
# __size:
#     Application size benchmarks.

tasks:
  # Deviceless tests

  # TODO: make these not require "has-android-device"; it is only there to
  #       ensure we have the Android SDK.

  flutter_gallery__build:
    description: >
      Collects various performance metrics from AOT builds of the Flutter
      Gallery.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]

  complex_layout__build:
    description: >
      Collects various performance metrics from AOT builds of the Complex
      Layout sample app.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]

  basic_material_app__size:
    description: >
      Measures the APK size of a basic material app.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]

  analyzer_cli__analysis_time:
    description: >
      Measures the speed of analyzing Flutter itself in batch mode.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]

  analyzer_server__analysis_time:
    description: >
      Measures the speed of analyzing Flutter itself in server mode.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]

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

  # 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: ["has-android-device"]

  platform_channel_test:
    description: >
     Runs a driver test on the Platform Channel sample app on Android.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]

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

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

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

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

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

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

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

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

  microbenchmarks:
    description: >
      Runs benchmarks from dev/benchmarks/microbenchmarks.
    stage: devicelab
    required_agent_capabilities: ["has-android-device"]
    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: ["has-android-device"]

  # iOS on-device tests

  platform_channel_test_ios:
    description: >
      Runs a driver test on the Platform Channel sample app on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["has-ios-device"]

  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: ["has-ios-device"]

  flutter_gallery_ios__start_up:
    description: >
      Measures the startup time of the Flutter Gallery app on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["has-ios-device"]

  complex_layout_ios__start_up:
    description: >
      Measures the startup time of the Complex Layout sample app on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["has-ios-device"]

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

  basic_material_app_ios__size:
    description: >
      Measures the IPA size of a basic material app.
    stage: devicelab_ios
    required_agent_capabilities: ["has-ios-device"]

  microbenchmarks_ios:
    description: >
      Runs benchmarks from dev/benchmarks/microbenchmarks on iOS.
    stage: devicelab_ios
    required_agent_capabilities: ["has-ios-device"]
    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: ["has-ios-device"]

  # Tests running on Windows host

  flutter_gallery_win__build:
    description: >
      Collects various performance metrics from AOT builds of the Flutter
      Gallery on Windows.
    stage: devicelab_win
    required_agent_capabilities: ["windows"]

  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"]
