// Copyright (C) 2022 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
    default_team: "trendy_team_android_health",
}

filegroup {
    name: "healthconnect-test-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/utils/**/*.java",
        "src/com/android/healthconnect/controller/tests/utils/**/*.kt",
        "src/**/HiltTestRunner.kt",
        "src/**/TestActivity.kt",
    ],
    visibility: [
        "//vendor:__subpackages__",
    ],
}

filegroup {
    name: "healthconnect-tests-screenshot-srcs",
    srcs: [
        "src/**/HiltTestRunner.kt",
        "src/**/TestActivity.kt",
        "src/com/android/healthconnect/controller/tests/utils/TestConstants.kt",
        "src/com/android/healthconnect/controller/tests/utils/ScrollingUtils.kt",
    ],
    visibility: [
        "//vendor:__subpackages__",
    ],
}

filegroup {
    name: "wear-ui-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/permissions/connectedapps/wear/**/*.kt",
    ],
    path: "src",
    visibility: ["//visibility:private"],
}

java_defaults {
    name: "health-connect-controller-tests-default",
    srcs: [":healthconnect-test-srcs"],
    kotlin_lang_version: "1.9",
    defaults: ["modules-utils-testable-device-config-defaults"],
    sdk_version: "module_current",
    min_sdk_version: "34",
    lint: {
        extra_check_modules: ["HealthFitnessLintChecker"],
    },
    static_libs: [
        "androidx.test.core",
        "androidx.test.rules",
        "HealthConnectPermissionsApis",
        "HealthConnectLibrary",
        "SettingsLibSettingsTheme",
        "kotlin-stdlib",
        "kotlinx-coroutines-android",
        "androidx.navigation_navigation-common-ktx",
        "androidx.navigation_navigation-fragment-ktx",
        "androidx.navigation_navigation-runtime-ktx",
        "androidx.navigation_navigation-ui-ktx",
        "androidx.navigation_navigation-testing",
        "SettingsLibCollapsingToolbarBaseActivity",
        "SettingsLibHelpUtils",
        "SettingsLibTopIntroPreference",
        "SettingsLibFooterPreference",
        "androidx.annotation_annotation",
        "hilt_android_testing",
        "kotlinx_coroutines_test",
        // test dependencies
        "androidx.test.espresso.contrib",
        "androidx.test.espresso.intents",
        "androidx.test.espresso.core",
        "androidx.test.ext.junit",
        "androidx.test.ext.truth",
        "androidx.test.rules",
        "compatibility-device-util-axt",
        "mockito-kotlin2",
        "platform-parametric-runner-lib",
        "android.permission.flags-aconfig-java-export",
        "collector-device-lib",
        "aconfig_settingstheme_exported_flags_java_lib",
    ],
    libs: [
        "kotlin-annotations",
        "android.test.base.stubs.system",
        "android.test.mock.stubs",
        "framework-healthfitness.impl",
    ],
    kotlincflags: ["-Xjvm-default=all"],
    test_suites: [
        "general-tests",
        "mts-healthfitness",
    ],
    test_mainline_modules: ["com.google.android.healthfitness.apex"],
    data: [
        ":HealthConnectUITestApp",
        ":HealthConnectUITestApp2",
        ":UnsupportedTestApp",
        ":OldPermissionsTestApp",
        ":MedicalPermissionsTestApp",
        ":NoPermissionsTestApp",
        ":HealthConnectUIBodySensorsTestApp",
        ":HealthConnectUIBodySensorsAndHealthTestApp",
        ":HealthConnectUIWearTestApp",
    ],
    test_config_template: "AndroidTestTemplate.xml",
    visibility: ["//visibility:private"],
}

java_library {
    name: "SafetyCenterTests",
    srcs: [
        "src/**/safetycenter/*.kt",
    ],
    sdk_version: "module_current",
    min_sdk_version: "34",
    static_libs: [
        "kotlin-stdlib",
        "hilt_android",
        "androidx.test.core",
        "androidx.test.rules",
        "androidx.test.espresso.contrib",
        "androidx.test.ext.junit",
        "androidx.test.ext.truth",
        "androidx.test.rules",
        "HealthConnectLibrary",
        "hilt_android_testing",
        "mockito-target-minus-junit4",
        "mockito-kotlin2",
    ],
    libs: [
        "android.test.mock.stubs",
        "android.test.mock.stubs.system",
        "framework-permission-s.stubs.module_lib",
    ],
}

filegroup {
    name: "data-screens-new-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/data/**/*.java",
        "src/com/android/healthconnect/controller/tests/data/**/*.kt",
        "src/com/android/healthconnect/controller/selectabledeletion/**/*.kt",
        "src/com/android/healthconnect/controller/selectabledeletion/**/*.java",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerDataScreensNewTests",
    srcs: [":data-screens-new-tests-srcs"],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.data.screens.new",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.data.screens.new",
}

filegroup {
    name: "data-screens-old-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/categories/**/*.java",
        "src/com/android/healthconnect/controller/tests/categories/**/*.kt",
        "src/com/android/healthconnect/controller/tests/dataaccess/**/*.java",
        "src/com/android/healthconnect/controller/tests/dataaccess/**/*.kt",
        "src/com/android/healthconnect/controller/tests/dataentries/**/*.java",
        "src/com/android/healthconnect/controller/tests/dataentries/**/*.kt",
        "src/com/android/healthconnect/controller/tests/entrydetails/**/*.java",
        "src/com/android/healthconnect/controller/tests/entrydetails/**/*.kt",
        "src/com/android/healthconnect/controller/tests/permissiontypes/**/*.java",
        "src/com/android/healthconnect/controller/tests/permissiontypes/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

filegroup {
    name: "deletion-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/autodelete/**/*.java",
        "src/com/android/healthconnect/controller/tests/autodelete/**/*.kt",
        "src/com/android/healthconnect/controller/tests/deletion/**/*.kt",
        "src/com/android/healthconnect/controller/tests/deletion/**/*.kt",
        "src/com/android/healthconnect/controller/tests/selectabledeletion/**/*.kt",
        "src/com/android/healthconnect/controller/tests/selectabledeletion/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerDeletionTests",
    srcs: [":deletion-tests-srcs"],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.deletion",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.deletion",
}

filegroup {
    name: "exercise-route-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/route/**/*.java",
        "src/com/android/healthconnect/controller/tests/route/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerExerciseRouteTests",
    srcs: [":exercise-route-tests-srcs"],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.exercise.routes",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.exercise.routes",
}

filegroup {
    name: "export-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/exportimport/**/*.java",
        "src/com/android/healthconnect/controller/tests/exportimport/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerExportTests",
    srcs: [":export-tests-srcs"],
    static_libs: [
        "HealthConnectExportApis",
    ],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.exportimport",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.exportimport",
}

filegroup {
    name: "home-and-onboarding-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/home/**/*.java",
        "src/com/android/healthconnect/controller/tests/home/**/*.kt",
        "src/com/android/healthconnect/controller/tests/onboarding/**/*.java",
        "src/com/android/healthconnect/controller/tests/onboarding/**/*.kt",
        "src/com/android/healthconnect/controller/tests/recentaccess/**/*.java",
        "src/com/android/healthconnect/controller/tests/recentaccess/**/*.kt",
        "src/com/android/healthconnect/controller/tests/devices/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerHomePageAndOnboardingTests",
    srcs: [":home-and-onboarding-tests-srcs"],
    static_libs: [
        "HealthConnectOnboardingApis",
    ],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.home.and.onboarding",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.home.and.onboarding",
}

filegroup {
    name: "manage-data-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/datasources/**/*.java",
        "src/com/android/healthconnect/controller/tests/datasources/**/*.kt",
        "src/com/android/healthconnect/controller/tests/managedata/**/*.java",
        "src/com/android/healthconnect/controller/tests/managedata/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerManageDataTests",
    srcs: [":manage-data-tests-srcs"],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.manage.data",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.manage.data",
}

filegroup {
    name: "migration-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/migration/**/*.java",
        "src/com/android/healthconnect/controller/tests/migration/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerMigrationTests",
    srcs: [":migration-tests-srcs"],
    static_libs: [
        "HealthConnectMigrationApis",
    ],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.migration",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.migration",
}

filegroup {
    name: "navigation-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/navigation/**/*.java",
        "src/com/android/healthconnect/controller/tests/navigation/**/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerNavigationTests",
    srcs: [":navigation-tests-srcs"],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.navigation",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.navigation",
}

filegroup {
    name: "permission-tests-srcs",
    srcs: [
        "src/com/android/healthconnect/controller/tests/matchmaking/*.java",
        "src/com/android/healthconnect/controller/tests/matchmaking/*.kt",
        "src/com/android/healthconnect/controller/tests/permissions/**/*.java",
        "src/com/android/healthconnect/controller/tests/permissions/**/*.kt",
        "src/com/android/healthconnect/controller/tests/shared/**/*.java",
        "src/com/android/healthconnect/controller/tests/shared/**/*.kt",
    ],
    exclude_srcs: [
        ":wear-ui-tests-srcs",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerPermissionTests",
    srcs: [":permission-tests-srcs"],
    exclude_srcs: [
        ":wear-ui-tests-srcs",
    ],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.permissions",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.permissions",
}

filegroup {
    name: "extra-tests-srcs",
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],
    exclude_srcs: [
        ":deletion-tests-srcs",
        ":data-screens-new-tests-srcs",
        ":data-screens-old-tests-srcs",
        ":exercise-route-tests-srcs",
        ":export-tests-srcs",
        ":home-and-onboarding-tests-srcs",
        ":manage-data-tests-srcs",
        ":migration-tests-srcs",
        ":navigation-tests-srcs",
        ":permission-tests-srcs",
        ":wear-ui-tests-srcs",
        "src/**/safetycenter/*.kt",
    ],
    visibility: ["//visibility:private"],
}

android_test {
    name: "HealthConnectControllerExtraTests",
    srcs: [":extra-tests-srcs"],
    defaults: ["health-connect-controller-tests-default"],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests.extras",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests.extras",
}

// For development only, not used in *TS.
android_test {
    name: "HealthConnectControllerUITests",
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],
    exclude_srcs: [
        "src/**/safetycenter/*.kt",
        ":wear-ui-tests-srcs",
    ],
    defaults: ["health-connect-controller-tests-default"],
    static_libs: [
        "SafetyCenterTests",
        "HealthConnectMigrationApis",
        "HealthConnectExportApis",
        "HealthConnectOnboardingApis",
    ],
    test_suites: [
        "general-tests",
    ],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests",
}

// A group of files known not to work with deviceless (aka bivalent aka robolectric) tests
filegroup {
    name: "robo-ui-tests-sources-exclude",
    srcs: [
        // TODO: b/419191898 - Update this to get as many Controller tests bivalent as possible
        // Not needed for Robo test
        "src/com/android/healthconnect/controller/tests/ManifestTest.kt",
        "src/com/android/healthconnect/controller/tests/MainActivityTest.kt",
        // This gets an "NoActivityResumedException" on two tests. Needs more investigation
        // However, does use "showOnboarding()" which might not work on robolectric as it uses
        // SharedPreferences.
        "src/com/android/healthconnect/controller/tests/data/DataManagementActivityTest.kt",
        // This needs more investigation
        "src/com/android/healthconnect/controller/tests/data/access/LoadAccessUseCaseTest.kt",
        // This test is not finding something in the view. Needs more investigation.
        "src/com/android/healthconnect/controller/tests/data/entries/MockedAllEntriesFragmentTest.kt",
        // This test asserts that an intent is fired. But the code just exits the activity, so
        // an intent is not fired under robolectric. The test could be modified to instead check
        // exit status, but needs some work to work bivalently and be a good test.
        "src/com/android/healthconnect/controller/tests/exportimport/ImportConfirmationDialogFragmentTest.kt",
        // The calls to startActivity are not starting the activity in this class under Robolectric
        "src/com/android/healthconnect/controller/tests/migration/MigrationActivityTest.kt",
        // This code likely needs to be refactored to use Intents to avoid race conditions when
        // detecting the started activity under robolectric.
        "src/com/android/healthconnect/controller/tests/navigation/TrampolineActivityTest.kt",
        // Simple mocking did not fix the failing tests, needs more investigation
        "src/com/android/healthconnect/controller/tests/permissions/connectedapps/settings/SettingsActivityTest.kt",
        // This seems to not terminate with call to get result when restore/migration in progress.
        // Needs more investigation.
        "src/com/android/healthconnect/controller/tests/permissions/connectedapps/settings/SettingsCombinedPermissionsFragmentTest.kt",
        // Just mocking permission reader leads to tests failing, needs more investigation
        "src/com/android/healthconnect/controller/tests/permissions/connectedapps/settings/SettingsFitnessAppFragmentTest.kt",
        // This seems to not terminate with call to get result when restore/migration in progress.
        // Needs more investigation.
        "src/com/android/healthconnect/controller/tests/permissions/connectedapps/settings/SettingsManagePermissionFragmentTest.kt",
        // This also cannot be made to pass with a simple introduction of a mock HealthConnectManager
        // Needs more investigation
        "src/com/android/healthconnect/controller/tests/permissions/connectedapps/settings/SettingsMedicalAppFragmentTest.kt",
        // Permissions tests that need investigating, have not even had a simple inspection.
        "src/com/android/healthconnect/controller/tests/permissions/data/FitnessPermissionStringsTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/data/HealthPermissionTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/data/MedicalPermissionTypeTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/request/MockedPermissionsActivityTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/request/FitnessPermissionsFragmentTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/request/MedicalPermissionsFragmentTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/request/PermissionsActivityTest.kt",
        "src/com/android/healthconnect/controller/tests/permissions/request/RequestPermissionViewModelTest.kt",
        // Needs more investigation. Just faking the appInfoReader causes the on device test to
        // fail, and isn't enough to get the robo test working.
        "src/com/android/healthconnect/controller/tests/recentaccess/RecentAccessViewModelTest.kt",
        // Activity creation is failing because Robolectric doesn't set callingPackage before
        // calling onCreate
        "src/com/android/healthconnect/controller/tests/route/RouteRequestActivityTest.kt",
        // Exclude safety centre
        "src/com/android/healthconnect/controller/tests/safetycenter/**/*.kt",
        // Uses the HealthPermissionsReader to get a list of permissions to test
        "src/com/android/healthconnect/controller/tests/shared/HealthDataCategoryExtensionsTest.kt",
        // Uses runWithShellPermissionIdentity.
        "src/com/android/healthconnect/controller/tests/shared/HealthPermissionReaderTest.kt",
        // The first click on some preferences doesn't seem to create a view that can be found for
        // the second click. To be investigated.
        "src/com/android/healthconnect/controller/tests/units/UnitsFragmentTest.kt",
        // It seems like Localization data (specifically WeekFields) are not fetched correctly
        // under robolectric.
        "src/com/android/healthconnect/controller/tests/utiltests/TimeUtilsTest.kt",
    ],
    path: "src",
}

// Robolectric test target for testing Health Connect Controller APK UI
// This target is currently under development to allow bivalent tests
// go/deviceless-tests
android_robolectric_test {
    name: "HealthConnectControllerRoboUITests",
    sdk_version: "module_current",
    srcs: [
        "src/com/android/healthconnect/controller/tests/TestActivity.kt",
        "src/com/android/healthconnect/controller/tests/*/**/*.kt",
    ],
    exclude_srcs: [
        "src/**/safetycenter/*.kt",
        ":robo-ui-tests-sources-exclude",
    ],
    // Enable robolectric changes we need for tests, that were contributed back and aren't default
    // yet.
    test_options: {
        test_runner_options: [
            {
                name: "java-flags",
                value: "-Drobolectric.allowPlatformPermissions=true",
            },
            {
                name: "java-flags",
                value: "-Drobolectric.looperMode=INSTRUMENTATION_TEST",
            },
            {
                name: "java-flags",
                // TODO: b/427121240 - fix JIT failures for this class.
                value: "-XX:CompileCommand=exclude,android/app/ContextImpl*.*",
            },
        ],
    },
    // defaults : ["health-connect-controller-tests-default"],
    static_libs: [
        // This is required to get mocking of final classes
        "inline-mockito5-robolectric-prebuilt",
        "mockito-kotlin-nodeps",
        "androidx.test.core",
        "androidx.test.ext.junit",
        "framework-healthfitness.impl",
        "HealthConnectPermissionsApis",
        "HealthConnectOnboardingApis",
        "HealthConnectMigrationApis",
        "HealthConnectExportApis",
        "HealthConnectLibrary",
        "hilt_android_testing",
        "kotlinx_coroutines_test",
        // test dependencies
        "androidx.navigation_navigation-testing",
        "androidx.test.espresso.contrib",
        "androidx.test.espresso.intents",
        "androidx.test.espresso.core",
        "androidx.test.ext.junit",
        "androidx.test.ext.truth",
        "androidx.test.rules",
        "flag-junit",
        "android.permission.flags-aconfig-java-export",
        "androidx.compose.runtime_runtime",
        "androidx.compose.ui_ui-test-junit4",
        "androidx.compose.ui_ui-test-manifest",
    ],
    java_resource_dirs: ["config"],
    instrumentation_for: "RoboTestApp",
}

// Robolectric test target for testing Health Connect Controller APK UI
// This target is currently under development to allow bivalent tests
// go/deviceless-tests
android_robolectric_test {
    name: "HealthConnectControllerWearRoboUITests",
    sdk_version: "module_current",
    srcs: [
        "src/com/android/healthconnect/controller/tests/utils/TestComposeActivity.kt",
        ":wear-ui-tests-srcs",
        ":healthconnect-test-srcs",
    ],
    // Enable robolectric changes we need for tests, that were contributed back and aren't default
    // yet.
    test_options: {
        test_runner_options: [
            {
                name: "java-flags",
                value: "-Drobolectric.allowPlatformPermissions=true",
            },
            {
                name: "java-flags",
                value: "-Drobolectric.looperMode=INSTRUMENTATION_TEST",
            },
            {
                name: "java-flags",
                // TODO: b/427121240 - fix JIT failures for this class.
                value: "-XX:CompileCommand=exclude,android/app/ContextImpl*.*",
            },
        ],
    },
    static_libs: [
        // This is required to get mocking of final classes
        "inline-mockito5-robolectric-prebuilt",
        "mockito-kotlin-nodeps",
        "androidx.test.core",
        "androidx.test.ext.junit",
        "framework-healthfitness.impl",
        "HealthConnectPermissionsApis",
        "HealthConnectOnboardingApis",
        "HealthConnectMigrationApis",
        "HealthConnectExportApis",
        "HealthConnectLibrary",
        "hilt_android_testing",
        "kotlinx_coroutines_test",
        // test dependencies
        "androidx.navigation_navigation-testing",
        "androidx.test.espresso.contrib",
        "androidx.test.espresso.intents",
        "androidx.test.espresso.core",
        "androidx.test.ext.junit",
        "androidx.test.ext.truth",
        "androidx.test.rules",
        "flag-junit",
        "android.permission.flags-aconfig-java-export",
        "androidx.compose.runtime_runtime",
        "androidx.compose.ui_ui-test-junit4",
        "androidx.compose.ui_ui-test-manifest",
        "androidx.compose.runtime_runtime",
        "androidx.arch.core_core-testing",
        "androidx.compose.runtime_runtime",
        "androidx.compose.ui_ui-test-junit4",
        "androidx.compose.ui_ui-test-manifest",
    ],
    java_resource_dirs: ["config"],
    instrumentation_for: "RoboTestApp",
}

// An app for robolectric to use to get the resources, and manifest
// Loads AndroidTest.xml from this directory.
android_app {
    name: "RoboTestApp",
    platform_apis: true,
    // Even though this is never run on the device, Soong complains if the libraries don't match
    // the manifest. Add the libraries here.
    // https://source.android.com/docs/core/runtime/art-class-loader-context
    uses_libs: [
        "android.test.runner",
    ],
    static_libs: [
        "HealthConnectLibrary",
    ],
    // Even though this is never run on the device, Soong complains if the libraries don't match
    // the manifest. Add the libraries here.
    // https://source.android.com/docs/core/runtime/art-class-loader-context
    optional_uses_libs: [
        "androidx.window.extensions",
        "androidx.window.sidecar",
        "org.apache.http.legacy",
        "wear-sdk",
    ],
}

// Designed to be an exact replica of the HealthConnectControllerRoboUITests but on device.
// For running comparisons for things like speed, success, flakiness between device and robolectric.
android_test {
    name: "HealthConnectControllerOnDeviceUITests",
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],
    exclude_srcs: [
        "src/**/safetycenter/*.kt",
        ":robo-ui-tests-sources-exclude",
        ":wear-ui-tests-srcs",
    ],
    defaults: ["health-connect-controller-tests-default"],
    static_libs: [
        "SafetyCenterTests",
        "HealthConnectMigrationApis",
        "HealthConnectExportApis",
        "HealthConnectOnboardingApis",
    ],
    test_suites: [
        "general-tests",
    ],
    manifest_values: {
        applicationId: "com.android.healthconnect.controller.tests",
    },
    instrumentation_target_package: "com.android.healthconnect.controller.tests",
}
