Run non-perf sensitive tests on Cirrus (#27971)

* Run non-perf sensisitive tests on Cirrus
diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index 45666f6..1a8284b 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -27,6 +27,7 @@
   'tool_tests': _runToolTests,
   'build_tests': _runBuildTests,
   'coverage': _runCoverage,
+  'integration_tests': _runIntegrationTests,
   'add2app_test': _runAdd2AppTest,
 };
 
@@ -615,3 +616,51 @@
     exit(1);
   }
 }
+
+Future<void> _runIntegrationTests() async {
+  print('Platform env vars:');
+
+  await _runDevicelabTest('dartdocs');
+
+  if (Platform.isLinux) {
+    await _runDevicelabTest('flutter_create_offline_test_linux');
+  } else if (Platform.isWindows) {
+    await _runDevicelabTest('flutter_create_offline_test_windows');
+  } else if (Platform.isMacOS) {
+    await _runDevicelabTest('flutter_create_offline_test_mac');
+    await _runDevicelabTest('module_test_ios');
+  }
+  await _integrationTestsAndroidSdk();
+}
+
+Future<void> _runDevicelabTest(String testName, {Map<String, String> env}) async {
+  await runCommand(
+    dart,
+    <String>['bin/run.dart', '-t', testName],
+    workingDirectory: path.join(flutterRoot, 'dev', 'devicelab'),
+    environment: env,
+  );
+}
+
+Future<void> _integrationTestsAndroidSdk() async {
+  final String androidSdkRoot = (Platform.environment['ANDROID_HOME']?.isEmpty ?? true)
+      ? Platform.environment['ANDROID_SDK_ROOT']
+      : Platform.environment['ANDROID_HOME'];
+  if (androidSdkRoot == null || androidSdkRoot.isEmpty) {
+    print('No Android SDK detected, skipping Android Integration Tests');
+    return;
+  }
+
+  final Map<String, String> env = <String, String> {
+    'ANDROID_HOME': androidSdkRoot,
+    'ANDROID_SDK_ROOT': androidSdkRoot,
+  };
+
+  // TODO(dnfield): gradlew is crashing on the cirrus image and it's not clear why.
+  if (!Platform.isWindows) {
+    await _runDevicelabTest('gradle_plugin_test', env: env);
+    await _runDevicelabTest('module_test', env: env);
+  }
+  // note: this also covers plugin_test_win as long as Windows has an Android SDK available.
+  await _runDevicelabTest('plugin_test', env: env);
+}
\ No newline at end of file