// Copyright (C) 2018 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 {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "packages_apps_Settings_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["packages_apps_Settings_license"],
}

android_test {
    name: "SettingsUITests",
    platform_apis: true,
    certificate: "platform",
    test_suites: ["device-tests"],
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],

    libs: [
        "android.test.runner",
        "android.test.base",
    ],

    static_libs: [
        "androidx.test.ext.junit",
        "androidx.test.rules",
        "androidx.test.uiautomator_uiautomator",
        "app-helpers-core",
        "launcher-helper-lib",
        "metrics-helper-lib",
        "platform-test-annotations",
        "settings-helper",
        "sysui-helper",
        "timeresult-helper-lib",
        "truth",
        "flag-junit",
    ],

    //sdk_version: "current",
}
