diff --git a/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java b/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java deleted file mode 100644 index 36beb90e0cd..00000000000 --- a/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java +++ /dev/null @@ -1,95 +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; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import android.content.Context; -import android.content.Intent; -import android.nfc.NfcAdapter; -import android.nfc.NfcManager; -import android.os.RemoteException; - -import androidx.test.InstrumentationRegistry; -import androidx.test.filters.MediumTest; -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.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; - -@Ignore -@MediumTest -@RunWith(AndroidJUnit4.class) -public class ConnectedDeviceTests { - - private static final String SETTINGS_PACKAGE = "com.android.settings"; - private static final int TIMEOUT = 2000; - private UiDevice mDevice; - - @Before - public void setUp() throws Exception { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); - try { - mDevice.setOrientationNatural(); - } catch (RemoteException e) { - throw new RuntimeException("failed to freeze device orientation", e); - } - } - - @After - public void tearDown() throws Exception { - mDevice.pressBack(); - mDevice.pressHome(); - } - - // This NFC toggle test is set up this way since there's no way to set - // the NFC flag to enabled or disabled without touching UI. - // This way, we get coverage for whether or not the toggle button works. - @Test - public void testNFCToggle() throws Exception { - NfcManager manager = (NfcManager) InstrumentationRegistry.getTargetContext() - .getSystemService(Context.NFC_SERVICE); - NfcAdapter nfcAdapter = manager.getDefaultAdapter(); - boolean nfcInitiallyEnabled = nfcAdapter.isEnabled(); - InstrumentationRegistry.getContext().startActivity(new Intent() - .setClassName( - SETTINGS_PACKAGE, - "com.android.settings.Settings$ConnectedDeviceDashboardActivity")); - UiObject2 nfcSetting = mDevice.wait(Until.findObject(By.text("NFC")), TIMEOUT); - nfcSetting.click(); - Thread.sleep(TIMEOUT * 2); - if (nfcInitiallyEnabled) { - assertFalse("NFC wasn't disabled on toggle", nfcAdapter.isEnabled()); - nfcSetting.click(); - Thread.sleep(TIMEOUT * 2); - assertTrue("NFC wasn't enabled on toggle", nfcAdapter.isEnabled()); - } else { - assertTrue("NFC wasn't enabled on toggle", nfcAdapter.isEnabled()); - nfcSetting.click(); - Thread.sleep(TIMEOUT * 2); - assertFalse("NFC wasn't disabled on toggle", nfcAdapter.isEnabled()); - } - } -} diff --git a/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTest.kt new file mode 100644 index 00000000000..413fae77d7c --- /dev/null +++ b/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTest.kt @@ -0,0 +1,50 @@ +/* + * 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 + +import android.provider.Settings +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts +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 DataUsageSettingsTest { + private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + + @Before + fun setUp() { + device.startMainActivityFromHomeScreen(Settings.ACTION_DATA_USAGE_SETTINGS) + } + + @Test + fun hasTexts() { + device.assertHasTexts(ON_SCREEN_TEXTS) + } + + private companion object { + val ON_SCREEN_TEXTS = listOf( + "0 B", + "Data Saver", + "Wi‑Fi data usage", + ) + } +} diff --git a/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java b/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java deleted file mode 100644 index 3befca32d2c..00000000000 --- a/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java +++ /dev/null @@ -1,87 +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; - -import android.os.RemoteException; -import android.provider.Settings; -import android.system.helpers.SettingsHelper; -import android.test.InstrumentationTestCase; -import android.test.suitebuilder.annotation.MediumTest; - -import androidx.test.uiautomator.By; -import androidx.test.uiautomator.UiDevice; -import androidx.test.uiautomator.Until; - -import org.junit.Ignore; - -@Ignore -public class DataUsageSettingsTests extends InstrumentationTestCase { - - private static final String SETTINGS_PACKAGE = "com.android.settings"; - private static final int TIMEOUT = 2000; - private UiDevice mDevice; - - @Override - public void setUp() throws Exception { - super.setUp(); - mDevice = UiDevice.getInstance(getInstrumentation()); - try { - mDevice.setOrientationNatural(); - } catch (RemoteException e) { - throw new RuntimeException("failed to freeze device orientaion", e); - } - } - - @Override - protected void tearDown() throws Exception { - // Need to finish settings activity - mDevice.pressBack(); - mDevice.pressHome(); - super.tearDown(); - } - - @MediumTest - public void testElementsOnDataUsageScreen() throws Exception { - launchDataUsageSettings(); - assertNotNull("Data usage element not found", - mDevice.wait(Until.findObject(By.text("Usage")), - TIMEOUT)); - assertNotNull("Data usage bar not found", - mDevice.wait(Until.findObject(By.res(SETTINGS_PACKAGE, - "color_bar")), TIMEOUT)); - assertNotNull("WiFi Data usage element not found", - mDevice.wait(Until.findObject(By.text("Wi-Fi data usage")), - TIMEOUT)); - assertNotNull("Network restrictions element not found", - mDevice.wait(Until.findObject(By.text("Network restrictions")), - TIMEOUT)); - } - - public void launchDataUsageSettings() throws Exception { - SettingsHelper.launchSettingsPage(getInstrumentation().getContext(), - Settings.ACTION_SETTINGS); - mDevice.wait(Until - .findObject(By.text("Network & Internet")), TIMEOUT) - .click(); - Thread.sleep(TIMEOUT * 2); - assertNotNull("Network & internet screen not loaded", mDevice.wait( - Until.findObject(By.text("Data usage")), TIMEOUT)); - mDevice.wait(Until - .findObject(By.text("Data usage")), TIMEOUT) - .click(); - } -} diff --git a/tests/uitests/src/com/android/settings/ui/NetworkOperatorSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/NetworkOperatorSettingsTest.kt new file mode 100644 index 00000000000..701ba2fb026 --- /dev/null +++ b/tests/uitests/src/com/android/settings/ui/NetworkOperatorSettingsTest.kt @@ -0,0 +1,67 @@ +/* + * 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 + +import android.provider.Settings +import android.telephony.SubscriptionManager +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts +import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen +import com.google.common.truth.TruthJUnit.assume +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class NetworkOperatorSettingsTest { + private val instrumentation = InstrumentationRegistry.getInstrumentation() + private val device = UiDevice.getInstance(instrumentation) + + @Before + fun setUp() { + assume().that( + instrumentation.context.getSystemService(SubscriptionManager::class.java)!! + .availableSubscriptionInfoList + ).isNotEmpty() + device.startMainActivityFromHomeScreen(Settings.ACTION_NETWORK_OPERATOR_SETTINGS) + } + + @Test + fun hasTexts() { + device.assertHasTexts(ON_SCREEN_TEXTS) + } + + private companion object { + val ON_SCREEN_TEXTS = listOf( + "Use SIM", + "0 B", + "Calls preference", + "SMS preference", + "Mobile data", + "Roaming", + "App data usage", + "Data warning & limit", + "Preferred network type", + "Carrier settings version", + "Automatically select network", + "Choose network", + "Access Point Names", + ) + } +} diff --git a/tests/uitests/src/com/android/settings/ui/NfcSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/NfcSettingsTest.kt new file mode 100644 index 00000000000..2fbbfe5ee83 --- /dev/null +++ b/tests/uitests/src/com/android/settings/ui/NfcSettingsTest.kt @@ -0,0 +1,54 @@ +/* + * 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 + +import android.nfc.NfcAdapter +import android.provider.Settings +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts +import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen +import com.google.common.truth.TruthJUnit.assume +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class NfcSettingsTest { + private val instrumentation = InstrumentationRegistry.getInstrumentation() + private val device = UiDevice.getInstance(instrumentation) + + @Before + fun setUp() { + assume().that(NfcAdapter.getDefaultAdapter(instrumentation.context)).isNotNull() + device.startMainActivityFromHomeScreen(Settings.ACTION_NFC_SETTINGS) + } + + @Test + fun hasTexts() { + device.assertHasTexts(ON_SCREEN_TEXTS) + } + + private companion object { + val ON_SCREEN_TEXTS = listOf( + "Use NFC", + "Require device unlock for NFC", + "Contactless payments", + ) + } +}