Run API 23 and 30 for Android AVD Scenario tests

Sample run: https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/garyq_google.com/7280832d8f5749fe9d9613a4eb04c53385c67a72ff2b1a2f98892ace6b47178b/+/build.proto?server=chromium-swarm.appspot.com

Change-Id: I82f832af5df99131569ab936704ddc74b9ac6d17
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/15340
Reviewed-by: Emmanuel Garcia <egarciad@google.com>
Commit-Queue: Emmanuel Garcia <egarciad@google.com>
diff --git a/recipes/engine/scenarios.expected/with_failure_upload_0.json b/recipes/engine/scenarios.expected/with_failure_upload_0.json
index 7601a6c..d132c1e 100644
--- a/recipes/engine/scenarios.expected/with_failure_upload_0.json
+++ b/recipes/engine/scenarios.expected/with_failure_upload_0.json
@@ -1007,7 +1007,7 @@
       "-root",
       "[CACHE]/builder/src/tools/android",
       "-ensure-file",
-      "chromium/tools/android/avd/linux-amd64 e5JfdaCjazDFh5uqhkPgVeZa9oCLVimm5_8TWAENz1gC",
+      "chromium/tools/android/avd/linux-amd64 kaocz43G7iGnwImCCFNX1YMqHwjMDicpEG8KxTVXRYAC",
       "-max-threads",
       "0",
       "-json-output",
@@ -1037,7 +1037,7 @@
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
       "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-e5JfdaCjazDFh5uq\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-kaocz43G7iGnwImC\", @@@",
       "@@@STEP_LOG_LINE@json.output@        \"package\": \"chromium/tools/android/avd/linux-amd64\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    ]@@@",
@@ -1053,6 +1053,118 @@
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
       "install",
       "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Install Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "start",
+      "--no-read-only",
+      "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Start Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "./build_and_run_android_tests.sh",
+      "android_debug_x86"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Scenario App Integration Tests"
+  },
+  {
+    "cmd": [
+      "kill",
+      "-9",
+      "17687"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Kill emulator"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "install",
+      "--avd-config",
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android30.textpb"
     ],
     "cwd": "[CACHE]/builder/src/tools/android",
@@ -1129,7 +1241,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Scenario App Integration Tests"
+    "name": "Scenario App Integration Tests (2)"
   },
   {
     "cmd": [
@@ -1156,7 +1268,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Kill emulator"
+    "name": "Kill emulator (2)"
   },
   {
     "cmd": [
@@ -1183,8 +1295,8 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Zip build/reports/diff_failures",
-    "stdin": "{\"entries\": [{\"path\": \"[CACHE]/builder/src/flutter/testing/scenario_app/build/reports/diff_failures\", \"type\": \"dir\"}], \"output\": \"[CLEANUP]/tmp_tmp_1/diff_failures.zip\", \"root\": \"[CACHE]/builder/src/flutter/testing/scenario_app\"}"
+    "name": "Zip build/reports/diff_failures_avd30",
+    "stdin": "{\"entries\": [{\"path\": \"[CACHE]/builder/src/flutter/testing/scenario_app/build/reports/diff_failures_avd30\", \"type\": \"dir\"}], \"output\": \"[CLEANUP]/tmp_tmp_1/diff_failures.zip\", \"root\": \"[CACHE]/builder/src/flutter/testing/scenario_app\"}"
   },
   {
     "cmd": [
diff --git a/recipes/engine/scenarios.expected/with_failure_upload_1.json b/recipes/engine/scenarios.expected/with_failure_upload_1.json
index df4d90b..3218f13 100644
--- a/recipes/engine/scenarios.expected/with_failure_upload_1.json
+++ b/recipes/engine/scenarios.expected/with_failure_upload_1.json
@@ -1007,7 +1007,7 @@
       "-root",
       "[CACHE]/builder/src/tools/android",
       "-ensure-file",
-      "chromium/tools/android/avd/linux-amd64 e5JfdaCjazDFh5uqhkPgVeZa9oCLVimm5_8TWAENz1gC",
+      "chromium/tools/android/avd/linux-amd64 kaocz43G7iGnwImCCFNX1YMqHwjMDicpEG8KxTVXRYAC",
       "-max-threads",
       "0",
       "-json-output",
@@ -1037,7 +1037,7 @@
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
       "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-e5JfdaCjazDFh5uq\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-kaocz43G7iGnwImC\", @@@",
       "@@@STEP_LOG_LINE@json.output@        \"package\": \"chromium/tools/android/avd/linux-amd64\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    ]@@@",
@@ -1053,6 +1053,118 @@
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
       "install",
       "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Install Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "start",
+      "--no-read-only",
+      "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Start Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "./build_and_run_android_tests.sh",
+      "android_debug_x86"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Scenario App Integration Tests"
+  },
+  {
+    "cmd": [
+      "kill",
+      "-9",
+      "17687"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Kill emulator"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "install",
+      "--avd-config",
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android30.textpb"
     ],
     "cwd": "[CACHE]/builder/src/tools/android",
@@ -1129,7 +1241,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Scenario App Integration Tests"
+    "name": "Scenario App Integration Tests (2)"
   },
   {
     "cmd": [
@@ -1156,7 +1268,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Kill emulator"
+    "name": "Kill emulator (2)"
   },
   {
     "cmd": [
@@ -1183,8 +1295,8 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Zip build/reports/diff_failures",
-    "stdin": "{\"entries\": [{\"path\": \"[CACHE]/builder/src/flutter/testing/scenario_app/build/reports/diff_failures\", \"type\": \"dir\"}], \"output\": \"[CLEANUP]/tmp_tmp_1/diff_failures.zip\", \"root\": \"[CACHE]/builder/src/flutter/testing/scenario_app\"}"
+    "name": "Zip build/reports/diff_failures_avd30",
+    "stdin": "{\"entries\": [{\"path\": \"[CACHE]/builder/src/flutter/testing/scenario_app/build/reports/diff_failures_avd30\", \"type\": \"dir\"}], \"output\": \"[CLEANUP]/tmp_tmp_1/diff_failures.zip\", \"root\": \"[CACHE]/builder/src/flutter/testing/scenario_app\"}"
   },
   {
     "cmd": [
diff --git a/recipes/engine/scenarios.expected/without_failure_upload_0.json b/recipes/engine/scenarios.expected/without_failure_upload_0.json
index ea9fc18..f502a08 100644
--- a/recipes/engine/scenarios.expected/without_failure_upload_0.json
+++ b/recipes/engine/scenarios.expected/without_failure_upload_0.json
@@ -1007,7 +1007,7 @@
       "-root",
       "[CACHE]/builder/src/tools/android",
       "-ensure-file",
-      "chromium/tools/android/avd/linux-amd64 e5JfdaCjazDFh5uqhkPgVeZa9oCLVimm5_8TWAENz1gC",
+      "chromium/tools/android/avd/linux-amd64 kaocz43G7iGnwImCCFNX1YMqHwjMDicpEG8KxTVXRYAC",
       "-max-threads",
       "0",
       "-json-output",
@@ -1037,7 +1037,7 @@
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
       "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-e5JfdaCjazDFh5uq\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-kaocz43G7iGnwImC\", @@@",
       "@@@STEP_LOG_LINE@json.output@        \"package\": \"chromium/tools/android/avd/linux-amd64\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    ]@@@",
@@ -1053,6 +1053,118 @@
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
       "install",
       "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Install Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "start",
+      "--no-read-only",
+      "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Start Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "./build_and_run_android_tests.sh",
+      "android_debug_x86"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Scenario App Integration Tests"
+  },
+  {
+    "cmd": [
+      "kill",
+      "-9",
+      "17687"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Kill emulator"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "install",
+      "--avd-config",
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android30.textpb"
     ],
     "cwd": "[CACHE]/builder/src/tools/android",
@@ -1129,7 +1241,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Scenario App Integration Tests"
+    "name": "Scenario App Integration Tests (2)"
   },
   {
     "cmd": [
@@ -1156,7 +1268,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Kill emulator"
+    "name": "Kill emulator (2)"
   },
   {
     "cmd": [],
diff --git a/recipes/engine/scenarios.expected/without_failure_upload_1.json b/recipes/engine/scenarios.expected/without_failure_upload_1.json
index ea9fc18..f502a08 100644
--- a/recipes/engine/scenarios.expected/without_failure_upload_1.json
+++ b/recipes/engine/scenarios.expected/without_failure_upload_1.json
@@ -1007,7 +1007,7 @@
       "-root",
       "[CACHE]/builder/src/tools/android",
       "-ensure-file",
-      "chromium/tools/android/avd/linux-amd64 e5JfdaCjazDFh5uqhkPgVeZa9oCLVimm5_8TWAENz1gC",
+      "chromium/tools/android/avd/linux-amd64 kaocz43G7iGnwImCCFNX1YMqHwjMDicpEG8KxTVXRYAC",
       "-max-threads",
       "0",
       "-json-output",
@@ -1037,7 +1037,7 @@
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
       "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-e5JfdaCjazDFh5uq\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-kaocz43G7iGnwImC\", @@@",
       "@@@STEP_LOG_LINE@json.output@        \"package\": \"chromium/tools/android/avd/linux-amd64\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    ]@@@",
@@ -1053,6 +1053,118 @@
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
       "install",
       "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Install Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "start",
+      "--no-read-only",
+      "--avd-config",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android23.textpb"
+    ],
+    "cwd": "[CACHE]/builder/src/tools/android",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Start Android emulator (API level 23)"
+  },
+  {
+    "cmd": [
+      "./build_and_run_android_tests.sh",
+      "android_debug_x86"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Scenario App Integration Tests"
+  },
+  {
+    "cmd": [
+      "kill",
+      "-9",
+      "17687"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter/testing/scenario_app",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "GOMA_DIR": "[CACHE]/goma/client"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/flutter/testing/scenario_app/android/gradle-home/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "name": "Kill emulator"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/builder/src/tools/android/src/tools/android/avd/avd.py",
+      "install",
+      "--avd-config",
       "[CACHE]/builder/src/tools/android/src/tools/android/avd/proto/generic_android30.textpb"
     ],
     "cwd": "[CACHE]/builder/src/tools/android",
@@ -1129,7 +1241,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Scenario App Integration Tests"
+    "name": "Scenario App Integration Tests (2)"
   },
   {
     "cmd": [
@@ -1156,7 +1268,7 @@
         "RECIPE_REPO[depot_tools]"
       ]
     },
-    "name": "Kill emulator"
+    "name": "Kill emulator (2)"
   },
   {
     "cmd": [],
diff --git a/recipes/engine/scenarios.py b/recipes/engine/scenarios.py
index 7758905..72b705f 100644
--- a/recipes/engine/scenarios.py
+++ b/recipes/engine/scenarios.py
@@ -29,6 +29,8 @@
 PROPERTIES = InputProperties
 ENV_PROPERTIES = EnvProperties
 
+ANDROID_APIS = ['23', '30']
+
 
 def GetCheckoutPath(api):
   return api.path['cache'].join('builder', 'src')
@@ -65,7 +67,7 @@
       android_tool_dir,
       api.cipd.EnsureFile().add_package(
           'chromium/tools/android/avd/linux-amd64',
-          'e5JfdaCjazDFh5uqhkPgVeZa9oCLVimm5_8TWAENz1gC'
+          'kaocz43G7iGnwImCCFNX1YMqHwjMDicpEG8KxTVXRYAC'
       )
   )
 
@@ -73,52 +75,53 @@
       'src', 'tools', 'android', 'avd', 'avd.py'
   )
 
-  avd_config = android_tool_dir.join(
-      'src', 'tools', 'android', 'avd', 'proto', 'generic_android30.textpb'
-  )
-
-  emulator_pid = ''
-  with api.context(cwd=android_tool_dir):
-    api.python(
-        'Install Android emulator (API level 30)', avd_script_path,
-        ['install', '--avd-config', avd_config]
+  for api_version in ANDROID_APIS:
+    avd_config = android_tool_dir.join(
+        'src', 'tools', 'android', 'avd', 'proto', 'generic_android' + api_version + '.textpb'
     )
 
-    output = api.python(
-        'Start Android emulator (API level 30)',
-        avd_script_path,
-        ['start', '--no-read-only', '--avd-config', avd_config],
-        stdout=api.raw_io.output()
-    ).stdout
-    m = re.match('.*pid: (\d+)\)', output)
-    emulator_pid = m.group(1)
-  test_dir = engine_checkout.join('flutter', 'testing')
-  scenario_app_tests = test_dir.join('scenario_app')
-
-  # Proxies `python` since vpython cannot resolve spec files outside of the jar
-  # file containing the python scripts.
-  gradle_home_bin_dir = scenario_app_tests.join('android', 'gradle-home', 'bin')
-  with api.context(cwd=scenario_app_tests,
-                   env_prefixes={'PATH': [gradle_home_bin_dir]}):
-
-    result = api.step(
-        'Scenario App Integration Tests',
-        ['./build_and_run_android_tests.sh', 'android_debug_x86'],
-        ok_ret='all'
-    )
-    api.step('Kill emulator', ['kill', '-9', emulator_pid])
-    build_failures_dir = scenario_app_tests.join('build', 'reports', 'diff_failures')
-    if api.path.exists(build_failures_dir):
-      # Upload any diff failures.
-      # If there are any, upload them to the cloud bucket.
-      api.bucket_util.upload_folder(
-          'Upload diff failures',
-          'src/flutter/testing/scenario_app',
-          'build/reports/diff_failures',
-          'diff_failures.zip',
-          bucket_name='flutter_logs',
+    emulator_pid = ''
+    with api.context(cwd=android_tool_dir):
+      api.python(
+          'Install Android emulator (API level ' + api_version + ')', avd_script_path,
+          ['install', '--avd-config', avd_config]
       )
 
+      output = api.python(
+          'Start Android emulator (API level '+ api_version + ')',
+          avd_script_path,
+          ['start', '--no-read-only', '--avd-config', avd_config],
+          stdout=api.raw_io.output()
+      ).stdout
+      m = re.match('.*pid: (\d+)\)', output)
+      emulator_pid = m.group(1)
+    test_dir = engine_checkout.join('flutter', 'testing')
+    scenario_app_tests = test_dir.join('scenario_app')
+
+    # Proxies `python` since vpython cannot resolve spec files outside of the jar
+    # file containing the python scripts.
+    gradle_home_bin_dir = scenario_app_tests.join('android', 'gradle-home', 'bin')
+    with api.context(cwd=scenario_app_tests,
+                     env_prefixes={'PATH': [gradle_home_bin_dir]}):
+
+      result = api.step(
+          'Scenario App Integration Tests',
+          ['./build_and_run_android_tests.sh', 'android_debug_x86'],
+          ok_ret='all'
+      )
+      api.step('Kill emulator', ['kill', '-9', emulator_pid])
+      build_failures_dir = scenario_app_tests.join('build', 'reports', 'diff_failures_avd' + api_version)
+      if api.path.exists(build_failures_dir):
+        # Upload any diff failures.
+        # If there are any, upload them to the cloud bucket.
+        api.bucket_util.upload_folder(
+            'Upload diff failures',
+            'src/flutter/testing/scenario_app',
+            'build/reports/diff_failures_avd' + api_version,
+            'diff_failures.zip',
+            bucket_name='flutter_logs',
+        )
+
 
 def RunSteps(api, properties, env_properties):
   # Collect memory/cpu/process after task execution.
@@ -160,9 +163,13 @@
 
 
 def GenTests(api):
-  scenario_failures = GetCheckoutPath(api).join(
-      'flutter', 'testing', 'scenario_app', 'build', 'reports', 'diff_failures'
+  scenario_failures_23 = GetCheckoutPath(api).join(
+      'flutter', 'testing', 'scenario_app', 'build', 'reports', 'diff_failures_avd23'
   )
+  scenario_failures_30 = GetCheckoutPath(api).join(
+      'flutter', 'testing', 'scenario_app', 'build', 'reports', 'diff_failures_avd30'
+  )
+  # for api_version in ANDROID_APIS:
   for upload_packages in (True, False):
     yield api.test(
         'without_failure_upload_%d' % upload_packages,
@@ -179,6 +186,12 @@
             ),
         ),
         api.step_data(
+            'Start Android emulator (API level 23)',
+            stdout=api.raw_io.output_text(
+                'android_23_google_apis_x86|emulator-5554 started (pid: 17687)'
+            )
+        ),
+        api.step_data(
             'Start Android emulator (API level 30)',
             stdout=api.raw_io.output_text(
                 'android_30_google_apis_x86|emulator-5554 started (pid: 17687)'
@@ -202,7 +215,14 @@
         ),
         # Makes the test fail.
         api.step_data('Scenario App Integration Tests', retcode=1),
-        api.path.exists(scenario_failures),
+        api.path.exists(scenario_failures_23),
+        api.path.exists(scenario_failures_30),
+        api.step_data(
+            'Start Android emulator (API level 23)',
+            stdout=api.raw_io.output_text(
+                'android_23_google_apis_x86|emulator-5554 started (pid: 17687)'
+            )
+        ),
         api.step_data(
             'Start Android emulator (API level 30)',
             stdout=api.raw_io.output_text(