Fix SettingsUITests flakiness
Bug: 290684887 Test: atest SettingsUITests Change-Id: I8f85c9c50eb3426b740c7ef3bf8996d6655bca0a
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.settings.ui
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -30,11 +31,11 @@ import org.junit.runner.RunWith
|
|||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
@SmallTest
|
@SmallTest
|
||||||
class AboutPhoneSettingsTests {
|
class AboutPhoneSettingsTests {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_DEVICE_INFO_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_DEVICE_INFO_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -16,50 +16,40 @@
|
|||||||
|
|
||||||
package com.android.settings.ui
|
package com.android.settings.ui
|
||||||
|
|
||||||
import android.os.RemoteException
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.clickObject
|
import com.android.settings.ui.testutils.SettingsTestUtils.clickObject
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.waitObject
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class AppsSettingsRetainFilterTests {
|
class AppsSettingsRetainFilterTests {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testDisablingSystemAppAndRotateDevice() {
|
fun testDisablingSystemAppAndRotateDevice() {
|
||||||
device.clickObject(By.text("Calculator"))
|
device.clickObject(By.text("Calculator"))
|
||||||
device.clickObject(By.text("Disable"))
|
device.clickObject(By.text("Disable"))
|
||||||
|
device.clickObject(By.text("Disable app")) // Click on "Disable App" on dialog.
|
||||||
// Click on "Disable App" on dialog.
|
device.assertObject(By.text("Enable"))
|
||||||
device.clickObject(By.text("Disable app"))
|
|
||||||
assertThat(device.waitObject(By.text("Enable"))).isNotNull()
|
|
||||||
device.pressBack()
|
device.pressBack()
|
||||||
device.clickObject(By.text("All apps"))
|
device.clickObject(By.text("All apps"))
|
||||||
device.clickObject(By.text("Disabled apps"))
|
device.clickObject(By.text("Disabled apps"))
|
||||||
try {
|
device.setOrientationLeft()
|
||||||
device.setOrientationLeft()
|
device.assertObject(By.text("Disabled apps"))
|
||||||
} catch (e: RemoteException) {
|
device.setOrientationNatural()
|
||||||
throw RuntimeException("Failed to freeze device orientation", e)
|
device.assertObject(By.text("Disabled apps"))
|
||||||
}
|
|
||||||
try {
|
|
||||||
device.unfreezeRotation()
|
|
||||||
} catch (e: RemoteException) {
|
|
||||||
throw RuntimeException("Failed to un-freeze device orientation", e)
|
|
||||||
}
|
|
||||||
assertThat(device.waitObject(By.text("Disabled apps"))).isNotNull()
|
|
||||||
device.clickObject(By.text("Calculator"))
|
device.clickObject(By.text("Calculator"))
|
||||||
device.clickObject(By.text("Enable"))
|
device.clickObject(By.text("Enable"))
|
||||||
}
|
}
|
||||||
|
@@ -17,25 +17,25 @@
|
|||||||
package com.android.settings.ui
|
package com.android.settings.ui
|
||||||
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.clickObject
|
import com.android.settings.ui.testutils.SettingsTestUtils.clickObject
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.waitObject
|
import com.android.settings.ui.testutils.SettingsTestUtils.waitObject
|
||||||
import com.google.common.truth.Truth.assertWithMessage
|
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
/** Verifies basic functionality of the About Phone screen */
|
/** Verifies basic functionality of the About Phone screen */
|
||||||
class AppsSettingsTests {
|
class AppsSettingsTests {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
|
||||||
val title = device.waitObject(By.text("All apps"))
|
device.assertObject(By.text("All apps"))
|
||||||
assertWithMessage("Could not find Settings > Apps screen").that(title).isNotNull()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -51,8 +51,7 @@ class AppsSettingsTests {
|
|||||||
device.clickObject(By.text("Disable"))
|
device.clickObject(By.text("Disable"))
|
||||||
device.clickObject(By.text("Disable app")) // Click on "Disable app" on dialog.
|
device.clickObject(By.text("Disable app")) // Click on "Disable app" on dialog.
|
||||||
device.clickObject(By.text("Enable"))
|
device.clickObject(By.text("Enable"))
|
||||||
val disableButton = device.waitObject(By.text("Disable"))
|
device.assertObject(By.text("Disable"))
|
||||||
assertWithMessage("App not enabled successfully").that(disableButton).isNotNull()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private companion object {
|
private companion object {
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.ui
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -27,11 +28,11 @@ import org.junit.runner.RunWith
|
|||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class BatterySettingsTest {
|
class BatterySettingsTest {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Intent.ACTION_POWER_USAGE_SUMMARY)
|
device.startMainActivityFromHomeScreen(Intent.ACTION_POWER_USAGE_SUMMARY)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -18,26 +18,26 @@ package com.android.settings.ui
|
|||||||
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.waitObject
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class DataSaverSettingsTest {
|
class DataSaverSettingsTest {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_DATA_SAVER_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_DATA_SAVER_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun hasSwitchBar() {
|
fun hasSwitchBar() {
|
||||||
assertThat(device.waitObject(By.text("Use Data Saver"))).isNotNull()
|
device.assertObject(By.text("Use Data Saver"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,9 +16,11 @@
|
|||||||
|
|
||||||
package com.android.settings.ui
|
package com.android.settings.ui
|
||||||
|
|
||||||
|
import android.os.SystemClock
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -29,11 +31,13 @@ import org.junit.runner.RunWith
|
|||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
@SmallTest
|
@SmallTest
|
||||||
class DevelopmentSettingsTest {
|
class DevelopmentSettingsTest {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS)
|
device.executeShellCommand("settings put global development_settings_enabled 1")
|
||||||
|
SystemClock.sleep(1000)
|
||||||
|
device.startMainActivityFromHomeScreen(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.ui
|
|||||||
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -27,11 +28,11 @@ import org.junit.runner.RunWith
|
|||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class HomepageDisplayTests {
|
class HomepageDisplayTests {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.ui
|
|||||||
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -27,11 +28,11 @@ import org.junit.runner.RunWith
|
|||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class SecuritySettingsTest {
|
class SecuritySettingsTest {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_SECURITY_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_SECURITY_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.ui
|
|||||||
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -27,11 +28,11 @@ import org.junit.runner.RunWith
|
|||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class StorageSettingsTest {
|
class StorageSettingsTest {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_INTERNAL_STORAGE_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_INTERNAL_STORAGE_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.ui
|
|||||||
|
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
|
||||||
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
@@ -27,11 +28,11 @@ import org.junit.runner.RunWith
|
|||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class SyncSettingsTest {
|
class SyncSettingsTest {
|
||||||
private lateinit var device: UiDevice
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
device = startMainActivityFromHomeScreen(Settings.ACTION_SYNC_SETTINGS)
|
device.startMainActivityFromHomeScreen(Settings.ACTION_SYNC_SETTINGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 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 com.android.settings.ui.inputmethods
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.By
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import com.android.settings.ui.testutils.SettingsTestUtils.SETTINGS_PACKAGE
|
||||||
|
import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
|
||||||
|
import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class SpellCheckerSettingsTest {
|
||||||
|
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
device.startMainActivityFromHomeScreen(Intent().apply {
|
||||||
|
setClassName(
|
||||||
|
SETTINGS_PACKAGE,
|
||||||
|
"com.android.settings.Settings\$SpellCheckersSettingsActivity",
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun hasSwitchBar() {
|
||||||
|
device.assertObject(By.text("Use spell checker"))
|
||||||
|
}
|
||||||
|
}
|
@@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 com.android.settings.ui.inputmethods;
|
|
||||||
|
|
||||||
import static com.android.settings.ui.testutils.SettingsTestUtils.TIMEOUT;
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
|
|
||||||
import android.app.Instrumentation;
|
|
||||||
import android.content.Intent;
|
|
||||||
|
|
||||||
import androidx.test.InstrumentationRegistry;
|
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
|
||||||
import androidx.test.uiautomator.By;
|
|
||||||
import androidx.test.uiautomator.UiDevice;
|
|
||||||
import androidx.test.uiautomator.UiObject2;
|
|
||||||
import androidx.test.uiautomator.Until;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
|
||||||
public class SpellCheckerSettingsUITest {
|
|
||||||
|
|
||||||
private Instrumentation mInstrumentation;
|
|
||||||
private Intent mIntent;
|
|
||||||
private UiDevice mUiDevice;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() {
|
|
||||||
mInstrumentation = InstrumentationRegistry.getInstrumentation();
|
|
||||||
mUiDevice = UiDevice.getInstance(mInstrumentation);
|
|
||||||
mIntent = new Intent().setClassName("com.android.settings",
|
|
||||||
"com.android.settings.Settings$SpellCheckersSettingsActivity")
|
|
||||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void launchSettings_hasSwitchBar() {
|
|
||||||
mInstrumentation.getContext().startActivity(mIntent);
|
|
||||||
final UiObject2 switchBar =
|
|
||||||
mUiDevice.wait(Until.findObject(By.text("Use spell checker")), TIMEOUT);
|
|
||||||
|
|
||||||
assertThat(switchBar).isNotNull();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -20,14 +20,12 @@ import android.content.Context
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.BySelector
|
import androidx.test.uiautomator.BySelector
|
||||||
import androidx.test.uiautomator.Direction
|
import androidx.test.uiautomator.Direction
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import androidx.test.uiautomator.UiObject2
|
import androidx.test.uiautomator.UiObject2
|
||||||
import androidx.test.uiautomator.Until
|
import androidx.test.uiautomator.Until
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import com.google.common.truth.Truth.assertWithMessage
|
import com.google.common.truth.Truth.assertWithMessage
|
||||||
|
|
||||||
object SettingsTestUtils {
|
object SettingsTestUtils {
|
||||||
@@ -37,37 +35,38 @@ object SettingsTestUtils {
|
|||||||
fun UiDevice.waitObject(bySelector: BySelector): UiObject2? =
|
fun UiDevice.waitObject(bySelector: BySelector): UiObject2? =
|
||||||
wait(Until.findObject(bySelector), TIMEOUT)
|
wait(Until.findObject(bySelector), TIMEOUT)
|
||||||
|
|
||||||
fun UiDevice.clickObject(bySelector: BySelector) = checkNotNull(waitObject(bySelector)).click()
|
fun UiDevice.assertObject(bySelector: BySelector): UiObject2 =
|
||||||
|
checkNotNull(waitObject(bySelector)) { "$bySelector not found" }
|
||||||
|
|
||||||
fun startMainActivityFromHomeScreen(action: String): UiDevice {
|
fun UiDevice.clickObject(bySelector: BySelector) = assertObject(bySelector).click()
|
||||||
// Initialize UiDevice instance
|
|
||||||
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
fun UiDevice.startMainActivityFromHomeScreen(action: String) {
|
||||||
device.pressKeyCodes(intArrayOf(KeyEvent.KEYCODE_MENU, KeyEvent.KEYCODE_MENU)) // unlock
|
startMainActivityFromHomeScreen(Intent(action))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun UiDevice.startMainActivityFromHomeScreen(intent: Intent) {
|
||||||
|
pressKeyCodes(intArrayOf(KeyEvent.KEYCODE_MENU, KeyEvent.KEYCODE_MENU)) // unlock
|
||||||
|
|
||||||
// Start from the home screen
|
// Start from the home screen
|
||||||
device.pressHome()
|
pressHome()
|
||||||
|
|
||||||
// Wait for launcher
|
// Wait for launcher
|
||||||
val launcherPackage: String = device.launcherPackageName
|
waitObject(By.pkg(launcherPackageName).depth(0))
|
||||||
assertThat(launcherPackage).isNotNull()
|
|
||||||
device.waitObject(By.pkg(launcherPackage).depth(0))
|
|
||||||
|
|
||||||
// Launch the app
|
// Launch the app
|
||||||
val context = ApplicationProvider.getApplicationContext<Context>()
|
ApplicationProvider.getApplicationContext<Context>().startActivity(Intent(intent).apply {
|
||||||
val intent = Intent(action).apply {
|
|
||||||
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
}
|
})
|
||||||
context.startActivity(intent)
|
|
||||||
|
|
||||||
// Wait for the app to appear
|
// Wait for the app to appear
|
||||||
device.waitObject(By.pkg(SETTINGS_PACKAGE).depth(0))
|
waitObject(By.pkg(SETTINGS_PACKAGE).depth(0))
|
||||||
|
|
||||||
return device
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun UiDevice.assertHasTexts(texts: List<String>) {
|
fun UiDevice.assertHasTexts(texts: List<String>) {
|
||||||
val scrollableObj = findObject(By.scrollable(true))
|
val scrollableObj =
|
||||||
|
findObject(By.res(SETTINGS_PACKAGE, "main_content"))
|
||||||
|
?: findObject(By.scrollable(true))
|
||||||
for (text in texts) {
|
for (text in texts) {
|
||||||
val selector = By.text(text)
|
val selector = By.text(text)
|
||||||
assertWithMessage("Missing text: $text").that(
|
assertWithMessage("Missing text: $text").that(
|
||||||
|
Reference in New Issue
Block a user