123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /**
- * ownCloud Android client application
- * <p/>
- * Copyright (C) 2015 ownCloud Inc.
- * <p/>
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2,
- * as published by the Free Software Foundation.
- * <p/>
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * <p/>
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- package com.owncloud.android.uiautomator;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.content.pm.ResolveInfo;
- import android.support.test.InstrumentationRegistry;
- import android.support.test.filters.SdkSuppress;
- import android.support.test.runner.AndroidJUnit4;
- import android.support.test.uiautomator.UiDevice;
- import android.support.test.uiautomator.UiObject;
- import android.support.test.uiautomator.UiObjectNotFoundException;
- import android.support.test.uiautomator.UiSelector;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import static org.hamcrest.CoreMatchers.notNullValue;
- import static org.junit.Assert.assertThat;
- /**
- * UI Automator tests
- */
- @RunWith(AndroidJUnit4.class)
- @SdkSuppress(minSdkVersion = 18)
- public class InitialTest {
- private static final String OWNCLOUD_APP_PACKAGE = "com.owncloud.android";
- private static final String ANDROID_SETTINGS_PACKAGE = "com.android.settings";
- private static final String SETTINGS_DATA_USAGE_OPTION = "Data usage";
- private static final int LAUNCH_TIMEOUT = 5000;
- private UiDevice mDevice;
- @Before
- public void initializeDevice() {
- // Initialize UiDevice instance
- mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
- }
- @Test
- public void checkPreconditions() {
- assertThat(mDevice, notNullValue());
- }
- /**
- * Start owncloud app
- */
- // @Test
- // public void startAppFromHomeScreen() {
- // // Perform a short press on the HOME button
- // mDevice.pressHome();
- //
- // // Wait for launcher
- // final String launcherPackage = getLauncherPackageName();
- // assertThat(launcherPackage, notNullValue());
- // mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), LAUNCH_TIMEOUT);
- //
- // // Launch the app
- // Context context = InstrumentationRegistry.getContext();
- // final Intent intent = context.getPackageManager()
- // .getLaunchIntentForPackage(OWNCLOUD_APP_PACKAGE);
- // intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
- // context.startActivity(intent);
- //
- // // Wait for the app to appear
- // mDevice.wait(Until.hasObject(By.pkg(OWNCLOUD_APP_PACKAGE).depth(0)), LAUNCH_TIMEOUT);
- // }
- /**
- * Start Settings app
- *
- * @throws UiObjectNotFoundException
- */
- // @Test
- // public void startSettingsFromHomeScreen() throws UiObjectNotFoundException {
- //
- // mDevice.pressHome();
- //
- // // Wait for launcher
- // final String launcherPackage = getLauncherPackageName();
- // assertThat(launcherPackage, notNullValue());
- // mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), LAUNCH_TIMEOUT);
- //
- // // Launch the app
- // Context context = InstrumentationRegistry.getContext();
- // final Intent intent = context.getPackageManager()
- // .getLaunchIntentForPackage(ANDROID_SETTINGS_PACKAGE);
- // intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
- // context.startActivity(intent);
- //
- // clickByText(SETTINGS_DATA_USAGE_OPTION);
- // }
- /**
- * Uses package manager to find the package name of the device launcher. Usually this package
- * is "com.android.launcher" but can be different at times. This is a generic solution which
- * works on all platforms.`
- */
- private String getLauncherPackageName() {
- // Create launcher Intent
- final Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_HOME);
- // Use PackageManager to get the launcher package name
- PackageManager pm = InstrumentationRegistry.getContext().getPackageManager();
- ResolveInfo resolveInfo = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
- return resolveInfo.activityInfo.packageName;
- }
- /**
- * Helper to click on object that match the text value.
- *
- * @param text the text
- * @throws UiObjectNotFoundException
- */
- private void clickByText(String text) throws UiObjectNotFoundException {
- UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
- UiObject obj = device.findObject(new UiSelector().text(text));
- obj.clickAndWaitForNewWindow();
- }
- }
|