Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bed81b4c authored by Toshiki Kikuchi's avatar Toshiki Kikuchi
Browse files

Add ConnectedDisplayCujSmokeTests

This CL adds an initial implementation of automated connected display
smoke tests with some TODO comments.

Bug: 416355555
Flag: EXEMPT - add test
Test: atest WMShellSmokeTestsDesktopMode
Change-Id: I607c771b552bc760f00742d54a06144fa80c5e34
parent 59bb7b7e
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
//
// Copyright (C) 2025 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 "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_base_license"],
}

android_test {
    name: "WMShellSmokeTestsDesktopMode",
    defaults: ["WMShellFlickerTestsDefault"],
    manifest: "AndroidManifest.xml",
    test_config_template: "AndroidTestTemplate.xml",
    srcs: ["src/**/*.kt"],
    static_libs: [
        "WMShellFlickerTestsBase",
        "WMShellTestUtils",
        "androidx.test.ext.junit",
        "desktop-test-lib",
        "flickerlib-helpers",
        "flickerlib-trace_processor_shell",
        "flickertestapplib",
        "launcher-aosp-tapl",
        "launcher-helper-lib",
        "platform-test-annotations",
        "wm-flicker-common-app-helpers",
        "wm-shell-flicker-utils",
    ],
}
+66 −0
Original line number Diff line number Diff line
<!--
  ~ Copyright (C) 2025 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.
  -->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="com.android.wm.shell">

    <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29"/>
    <!-- Read and write traces from external storage -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- Allow the test to write directly to /sdcard/ -->
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <!-- Write secure settings -->
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <!-- Capture screen contents -->
    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
    <!-- Enable / Disable tracing !-->
    <uses-permission android:name="android.permission.DUMP" />
    <!-- Run layers trace -->
    <uses-permission android:name="android.permission.HARDWARE_TEST"/>
    <!-- Capture screen recording -->
    <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT"/>
    <!-- Workaround grant runtime permission exception from b/152733071 -->
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <!-- Force-stop test apps -->
    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
    <!-- Control test app's media session -->
    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
    <!-- ATM.removeRootTasksWithActivityTypes() -->
    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_TASKS" />
    <!-- Enable bubble notification-->
    <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
    <!-- Allow the test to connect to perfetto trace processor -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- Use trusted virtual displays to emulate an external display -->
    <uses-permission android:name="android.permission.ADD_TRUSTED_DISPLAY"/>
    <uses-permission android:name="android.permission.MANAGE_DISPLAYS" />
    <uses-permission android:name="android.permission.INJECT_EVENTS" />
    <uses-permission android:name="android.permission.SET_POINTER_SPEED" />

    <application android:requestLegacyExternalStorage="true"
                 android:networkSecurityConfig="@xml/network_security_config"
                 android:largeHeap="true">
        <uses-library android:name="android.test.runner"/>
    </application>

    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
                     android:targetPackage="com.android.wm.shell"
                     android:label="WindowManager Shell Smoke Tests">
    </instrumentation>
</manifest>
+83 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2025 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.
  -->
<configuration description="Runs WindowManager Shell Smoke Tests {MODULE}">
    <target_preparer class="com.android.tradefed.targetprep.DeviceSetup">
        <!-- disable DeprecatedTargetSdk warning -->
        <option name="run-command" value="setprop debug.wm.disable_deprecated_target_sdk_dialog 1"/>
        <!-- keeps the screen on during tests -->
        <option name="screen-always-on" value="on"/>
        <!-- Turns off Wi-fi -->
        <option name="wifi" value="off"/>
        <!-- Turns off Bluetooth -->
        <option name="bluetooth" value="off"/>
        <!-- prevents the phone from restarting -->
        <option name="force-skip-system-props" value="true"/>
        <!-- set WM tracing verbose level to all -->
        <option name="run-command" value="cmd window tracing level all"/>
        <!-- set WM tracing to frame (avoid incomplete states) -->
        <option name="run-command" value="cmd window tracing frame"/>
        <!-- disable betterbug as it's log collection dialogues cause flakes in e2e tests -->
        <option name="run-command" value="pm disable com.google.android.internal.betterbug"/>
        <!-- ensure lock screen mode is swipe -->
        <option name="run-command" value="locksettings set-disabled false"/>
        <!-- restart launcher to activate TAPL -->
        <option name="run-command"
                value="setprop ro.test_harness 1 ; am force-stop com.google.android.apps.nexuslauncher"/>
        <!-- Increase trace size: 20mb for WM and 80mb for SF -->
        <option name="run-command" value="cmd window tracing size 20480"/>
        <option name="run-command" value="su root service call SurfaceFlinger 1029 i32 81920"/>
    </target_preparer>
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="test-user-token" value="%TEST_USER%"/>
        <option name="run-command" value="rm -rf /data/user/%TEST_USER%/files/*"/>
        <option name="run-command" value="settings put secure show_ime_with_hard_keyboard 1"/>
        <option name="run-command" value="settings put system show_touches 1"/>
        <option name="run-command" value="settings put system pointer_location 1"/>
        <option name="teardown-command"
                value="settings delete secure show_ime_with_hard_keyboard"/>
        <option name="teardown-command" value="settings delete system show_touches"/>
        <option name="teardown-command" value="settings delete system pointer_location"/>
        <option name="teardown-command"
                value="cmd overlay enable com.android.internal.systemui.navbar.gestural"/>
        <!-- Unlock screen -->
        <option name="run-command" value="input keyevent KEYCODE_WAKEUP" />
        <!-- Dismiss keyguard, in case it's set as "Swipe to unlock" -->
        <option name="run-command" value="wm dismiss-keyguard" />
    </target_preparer>
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true"/>
        <option name="test-file-name" value="{MODULE}.apk"/>
        <option name="test-file-name" value="FlickerTestApp.apk"/>
    </target_preparer>

    <!-- Needed for pushing the trace config file -->
    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
        <option name="force-root" value="true" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
        <option name="package" value="{PACKAGE}"/>
        <option name="shell-timeout" value="6600s"/>
        <option name="test-timeout" value="6000s"/>
        <option name="hidden-api-checks" value="false"/>
    </test>
    <!-- Needed for pulling the collected trace config and screenrecord to the host -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/data/user/0/com.android.wm.shell/files"/>
        <option name="collect-on-run-ended-only" value="true"/>
        <option name="clean-up" value="true"/>
    </metrics_collector>
</configuration>
+7 −0
Original line number Diff line number Diff line
{
  "wm-devices": [
    {
      "name": "WMShellSmokeTestsDesktopMode"
    }
  ]
}
 No newline at end of file
+22 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2025 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.
  -->

<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>
Loading