Skip to content

Commit

Permalink
Update components and migrate to androidx (#232)
Browse files Browse the repository at this point in the history
  • Loading branch information
mykola-mokhnach committed Dec 16, 2018
1 parent 4657b7b commit ce4b766
Show file tree
Hide file tree
Showing 105 changed files with 392 additions and 624 deletions.
56 changes: 26 additions & 30 deletions .travis.yml
@@ -1,39 +1,26 @@
language: android
dist: precise
jdk: oraclejdk8
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
- g++-6
android:
components:
# use the latest revision of Android SDK Tools
- platform-tools
- tools
- build-tools-$ANDROID_BUILD_TOOLS
- android-22
- android-24

# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- addon-google_apis-google-19

# Specify at least one system image,
# if you need to run emulator(s) during your tests
- sys-img-armeabi-v7a-android-24
- sys-img-armeabi-v7a-android-22
- build-tools
env:
global:
- DEVICE=android
- START_EMU=1
- ANDROID_EMU_NAME=test
- ANDROID_EMU_ABI=armeabi-v7a
- ANDROID_BUILD_TOOLS=26.0.2
- ANDROID_BUILD_TOOLS=28.0.3
- ANDROID_EMU_TAG=default
- E2E_TEST_PACKAGE=io.appium.uiautomator2.unittest.test
- CC=gcc-4.9 CXX=g++-4.9
- CC=gcc-6 CXX=g++-6
matrix:
- TEST=unit START_EMU=0
- TEST=AlertCommandsTest ANDROID_EMU_TARGET=android-24
Expand All @@ -56,25 +43,34 @@ before_script:
- npm install

- |
echo y | android update sdk --no-ui -t tools
echo yes | sdkmanager tools > /dev/null
echo yes | sdkmanager --update > /dev/null
echo yes | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" > /dev/null
echo yes | sdkmanager "extras;android;m2repository" > /dev/null
echo yes | sdkmanager "extras;google;m2repository" > /dev/null
if [ ${START_EMU} = "1" ]; then
# update sdk
echo y | android update sdk --no-ui -t platform-tools
echo y | android update sdk --no-ui -t tools
echo y | android update sdk --no-ui -t ${ANDROID_EMU_TARGET}
# print lists of android sdk and targets
android list sdk --extended --no-ui --all
android list targets
echo no | android create avd --force -n ${ANDROID_EMU_NAME} -t ${ANDROID_EMU_TARGET} --abi ${ANDROID_EMU_ABI} --sdcard 200M
emulator -avd ${ANDROID_EMU_NAME} -no-window &
echo yes | sdkmanager "platforms;${ANDROID_EMU_TARGET}" > /dev/null
export ANDROID_EMU_IMAGE="system-images;${ANDROID_EMU_TARGET};${ANDROID_EMU_TAG};${ANDROID_EMU_ABI}"
for retry in 1 2 3; do
echo yes | sdkmanager "${ANDROID_EMU_IMAGE}" > /dev/null && break
echo "sdkmanager was not able to download the ${ANDROID_EMU_IMAGE} image (retry ${retry})"
sleep 5
done
sdkmanager --list
export TOOLS=${ANDROID_HOME}/tools
export PATH=${ANDROID_HOME}:${ANDROID_HOME}/emulator:${TOOLS}:${TOOLS}/bin:${ANDROID_HOME}/platform-tools:${PATH}
echo no | avdmanager create avd -k "${ANDROID_EMU_IMAGE}" -n "${ANDROID_EMU_NAME}" -f --abi "${ANDROID_EMU_ABI}" --tag "${ANDROID_EMU_TAG}" || exit 1
emulator -avd "${ANDROID_EMU_NAME}" -no-window -camera-back none -camera-front none &
# make sure emulator started
$(npm bin)/android-emu-travis-post
# get root
adb root
adb devices
else
sdkmanager --list
fi
script:
- |
Expand Down
49 changes: 24 additions & 25 deletions app/build.gradle
Expand Up @@ -5,7 +5,7 @@ buildscript {
maven { url 'https://jitpack.io' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.github.JakeWharton:sdk-manager-plugin:0ce4cdf08009d79223850a59959d9d6e774d0f77'
classpath 'de.mobilej.unmock:UnMockPlugin:0.6.4'
}
Expand All @@ -15,19 +15,19 @@ apply plugin: 'com.android.application'
apply plugin: 'de.mobilej.unmock'

android {
compileSdkVersion 24
buildToolsVersion '26.0.2'
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId 'io.appium.uiautomator2'
minSdkVersion 21
targetSdkVersion 24
targetSdkVersion 28
versionCode 22
archivesBaseName = 'appium-uiautomator2'
/**
* versionName should be updated and inline with version in package.json for every npm release.
*/
versionName '2.8.0'
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
debug {
Expand Down Expand Up @@ -71,38 +71,37 @@ unMock {
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'io.netty:netty-all:4.0.41.Final'
compile 'com.jayway.jsonpath:json-path:0.8.1'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.android.support.test:runner:0.5'
compile 'com.android.support:support-annotations:23.1.1'
compile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'io.netty:netty-all:4.0.41.Final'
implementation 'com.jayway.jsonpath:json-path:0.8.1'
implementation 'com.squareup.okhttp:okhttp:2.5.0'
implementation 'androidx.test:runner:1.1.1'
implementation 'androidx.test:core:1.1.0'
implementation 'androidx.test.uiautomator:uiautomator:2.2.0'
unmock 'org.robolectric:android-all:7.1.0_r7-robolectric-0'
testCompile 'org.json:json:20160810'
testCompile 'junit:junit:4.12'
testCompile 'org.powermock:powermock-module-junit4:1.7.4'
testCompile 'org.powermock:powermock-module-junit4-rule:1.7.4'
testCompile 'org.powermock:powermock-api-mockito2:1.7.4'
testCompile 'org.powermock:powermock-classloading-xstream:1.7.4'
testCompile 'org.robolectric:robolectric:3.3.2'
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support:support-annotations:23.1.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2'
testImplementation 'org.json:json:20160810'
testImplementation 'junit:junit:4.12'
testImplementation 'org.powermock:powermock-module-junit4:1.7.4'
testImplementation 'org.powermock:powermock-module-junit4-rule:1.7.4'
testImplementation 'org.powermock:powermock-api-mockito2:1.7.4'
testImplementation 'org.powermock:powermock-classloading-xstream:1.7.4'
testImplementation 'org.robolectric:robolectric:4.0.2'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-web:3.1.1'
}

task installAUT(type: Exec) {
group = 'test'
description = 'Install app under test'
doFirst {
println('Install AUT')
def adb = android.getAdbExecutable().toString()
def adb = "$System.env.ANDROID_HOME/platform-tools/adb"
def apk = file('../node_modules/android-apidemos/apks/ApiDemos-debug.apk')
def sdkVersion = "$adb shell getprop ro.build.version.sdk".execute().text.trim()
println "Device SDK version: $sdkVersion"
/* This seems weird but it is what it is: https://github.com/wix/detox/issues/274 */
def command = sdkVersion.toInteger() < 24 ? "$adb install -rg $apk" : "$adb install -r -g $apk"
def command = sdkVersion.toInteger() < 23 ? "$adb install -r $apk" : "$adb install -r -g $apk"
println "Execute command: $command"
commandLine command.split(' ')
}
Expand Down
Expand Up @@ -17,7 +17,6 @@

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.test.uiautomator.UiDevice;
import android.util.Base64;

import org.json.JSONArray;
Expand All @@ -31,6 +30,7 @@
import java.util.List;
import java.util.Map;

import androidx.test.uiautomator.UiDevice;
import io.appium.uiautomator2.model.By;
import io.appium.uiautomator2.model.internal.CustomUiDevice;
import io.appium.uiautomator2.server.WDStatus;
Expand All @@ -41,7 +41,7 @@
import io.appium.uiautomator2.unittest.test.internal.SkipHeadlessDevices;
import io.appium.uiautomator2.utils.Device;

import static android.support.test.InstrumentationRegistry.getInstrumentation;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static io.appium.uiautomator2.unittest.test.internal.Client.waitForNettyStatus;
import static io.appium.uiautomator2.unittest.test.internal.TestUtils.getJsonObjectCountInJsonArray;
import static io.appium.uiautomator2.unittest.test.internal.TestUtils.waitForElement;
Expand Down
Expand Up @@ -36,11 +36,9 @@
import static io.appium.uiautomator2.unittest.test.internal.commands.ElementCommands.getText;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.drag;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.flickOnElement;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands
.flickOnPosition;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.flickOnPosition;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.longClick;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands
.multiPointerGesture;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.multiPointerGesture;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.swipe;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.tap;
import static io.appium.uiautomator2.unittest.test.internal.commands.GestureCommands.touchDown;
Expand Down
Expand Up @@ -16,9 +16,6 @@
package io.appium.uiautomator2.unittest.test.internal;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.Configurator;

import org.json.JSONException;
import org.junit.AfterClass;
Expand All @@ -31,19 +28,20 @@

import java.io.IOException;

import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import androidx.test.uiautomator.Configurator;
import io.appium.uiautomator2.model.By;
import io.appium.uiautomator2.model.settings.Settings;
import io.appium.uiautomator2.server.ServerInstrumentation;
import io.appium.uiautomator2.unittest.test.Config;

import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.support.test.InstrumentationRegistry.getTargetContext;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static io.appium.uiautomator2.unittest.test.internal.TestUtils.waitForElement;
import static io.appium.uiautomator2.unittest.test.internal.TestUtils.waitForElementInvisibility;
import static io.appium.uiautomator2.unittest.test.internal.commands.DeviceCommands.createSession;
import static io.appium.uiautomator2.unittest.test.internal.commands.DeviceCommands.deleteSession;
import static io.appium.uiautomator2.unittest.test.internal.commands.DeviceCommands.updateSetting;
import static io.appium.uiautomator2.unittest.test.internal.commands.ElementCommands.click;
import static io.appium.uiautomator2.utils.Device.getUiDevice;
import static org.junit.Assert.assertNotNull;
Expand Down Expand Up @@ -74,8 +72,8 @@ public static void startServer() throws JSONException, IOException {
createSession();
Configurator.getInstance().setWaitForSelectorTimeout(0);
Configurator.getInstance().setWaitForIdleTimeout(50000);
TestUtils.grantPermission(getTargetContext(), READ_EXTERNAL_STORAGE);
TestUtils.grantPermission(getTargetContext(), WRITE_EXTERNAL_STORAGE);
TestUtils.grantPermission(getApplicationContext(), READ_EXTERNAL_STORAGE);
TestUtils.grantPermission(getApplicationContext(), WRITE_EXTERNAL_STORAGE);
}

@AfterClass
Expand Down
Expand Up @@ -17,16 +17,16 @@

import android.content.Context;
import android.content.Intent;
import android.support.test.InstrumentationRegistry;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.Until;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.Until;
import io.appium.uiautomator2.model.By;
import io.appium.uiautomator2.unittest.test.Config;
import io.appium.uiautomator2.utils.Device;
Expand Down Expand Up @@ -62,7 +62,7 @@ private static void waitForAppToLaunch(String appPackage) throws JSONException {
do {
Device.waitForIdle();
waitStatus = getUiDevice().wait(Until.hasObject(
android.support.test.uiautomator.By.pkg(appPackage).depth(0)),
androidx.test.uiautomator.By.pkg(appPackage).depth(0)),
IMPLICIT_TIMEOUT);
if (waitStatus) {
return;
Expand Down
Expand Up @@ -15,12 +15,11 @@
*/
package io.appium.uiautomator2.unittest.test.internal.commands;

import android.support.annotation.Nullable;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import androidx.annotation.Nullable;
import io.appium.uiautomator2.model.By;
import io.appium.uiautomator2.unittest.test.Config;
import io.appium.uiautomator2.unittest.test.internal.Client;
Expand Down
@@ -1,11 +1,11 @@
package io.appium.uiautomator2.server.test;

import android.os.SystemClock;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import androidx.test.runner.AndroidJUnit4;
import io.appium.uiautomator2.common.exceptions.SessionRemovedException;
import io.appium.uiautomator2.server.ServerInstrumentation;
import io.appium.uiautomator2.utils.Logger;
Expand Down
Expand Up @@ -16,8 +16,7 @@

package io.appium.uiautomator2.common.exceptions;

import android.support.annotation.Nullable;

import androidx.annotation.Nullable;
import io.appium.uiautomator2.utils.UiSelectorParser;

@SuppressWarnings("serial")
Expand Down
Expand Up @@ -18,7 +18,6 @@

import android.graphics.Point;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.util.SparseArray;
import android.util.Xml;
import android.view.Display;
Expand All @@ -30,6 +29,7 @@
import java.io.IOException;
import java.io.StringWriter;

import androidx.annotation.Nullable;
import io.appium.uiautomator2.common.exceptions.UiAutomator2Exception;
import io.appium.uiautomator2.model.NotificationListener;
import io.appium.uiautomator2.model.UiElement;
Expand Down
Expand Up @@ -16,11 +16,11 @@

package io.appium.uiautomator2.core;

import android.support.annotation.Nullable;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObject2;
import android.view.accessibility.AccessibilityNodeInfo;

import androidx.annotation.Nullable;
import androidx.test.uiautomator.UiObject;
import androidx.test.uiautomator.UiObject2;
import io.appium.uiautomator2.common.exceptions.UiAutomator2Exception;
import io.appium.uiautomator2.utils.ReflectionUtils;

Expand Down
Expand Up @@ -20,12 +20,12 @@
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.test.uiautomator.UiDevice;
import android.util.Range;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;

import androidx.annotation.Nullable;
import androidx.test.uiautomator.UiDevice;
import io.appium.uiautomator2.utils.Logger;

import static io.appium.uiautomator2.utils.Device.getUiDevice;
Expand Down

0 comments on commit ce4b766

Please sign in to comment.