Skip to content

Commit de09f12

Browse files
committed
(Android) Migrate instrumentation support lib to androidx libs
1 parent bd96780 commit de09f12

40 files changed

+368
-210
lines changed

detox/android/detox/build.gradle

+7-5
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,13 @@ dependencies {
7575
minReactNative46Implementation 'com.squareup.okhttp3:okhttp:3.6.0'
7676
minReactNative46Implementation 'com.squareup.okio:okio:1.13.0'
7777

78-
implementation('com.android.support.test.espresso:espresso-core:3.0.2', {
79-
exclude group: 'com.google.code.findbugs'
80-
})
81-
implementation 'com.android.support.test:runner:1.0.2'
82-
implementation 'com.android.support.test:rules:1.0.2'
78+
// Versions are in-sync with the 'androidx-test-1.1.0' release/tag of the android-test github repo,
79+
// used by the Detox generator. See https://github.com/android/android-test/releases/tag/androidx-test-1.1.0
80+
// Important: Should remain so when generator tag is replaced!
81+
api 'androidx.test.espresso:espresso-core:3.1.1'
82+
api 'androidx.test:runner:1.1.1'
83+
api 'androidx.test:rules:1.1.1'
84+
api 'androidx.test.ext:junit:1.1.0'
8385

8486
// noinspection GradleDynamicVersion
8587
compileOnly "com.facebook.react:react-native:+"

detox/android/detox/src/androidTest/java/com/wix/detox/ExampleInstrumentedTest.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.wix.detox;
22

33
import android.content.Context;
4-
import android.support.test.InstrumentationRegistry;
5-
import android.support.test.runner.AndroidJUnit4;
64

75
import org.junit.Test;
86
import org.junit.runner.RunWith;
97

8+
import androidx.test.platform.app.InstrumentationRegistry;
9+
import androidx.test.ext.junit.runners.AndroidJUnit4;
10+
1011
import static org.junit.Assert.*;
1112

1213
/**
@@ -19,7 +20,7 @@ public class ExampleInstrumentedTest {
1920
@Test
2021
public void useAppContext() throws Exception {
2122
// Context of the app under test.
22-
Context appContext = InstrumentationRegistry.getTargetContext();
23+
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
2324

2425
assertEquals("com.wix.detox", appContext.getPackageName());
2526
}

detox/android/detox/src/main/java/com/wix/detox/Detox.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
import android.os.Looper;
1010
import android.os.RemoteException;
1111
import android.support.annotation.NonNull;
12-
import android.support.test.InstrumentationRegistry;
13-
import android.support.test.rule.ActivityTestRule;
1412
import android.support.test.uiautomator.UiDevice;
1513
import android.support.test.uiautomator.UiObject;
1614
import android.support.test.uiautomator.UiObjectNotFoundException;
1715
import android.support.test.uiautomator.UiSelector;
16+
import androidx.test.platform.app.InstrumentationRegistry;
17+
18+
import androidx.test.rule.ActivityTestRule;
1819

1920
/**
2021
* <p>Static class.</p>
@@ -85,12 +86,12 @@ private Detox() {
8586
*
8687
* <p>
8788
* In case you have a non-standard React Native application, consider using
88-
* {@link Detox#runTests(ActivityTestRule, Object)}}.
89+
* {@link #runTests(ActivityTestRule, Context)}}.
8990
* </p>
9091
* @param activityTestRule the activityTestRule
9192
*/
9293
public static void runTests(ActivityTestRule activityTestRule) {
93-
Context appContext = InstrumentationRegistry.getTargetContext().getApplicationContext();
94+
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext().getApplicationContext();
9495
runTests(activityTestRule, appContext);
9596
}
9697

@@ -109,7 +110,7 @@ public static void runTests(ActivityTestRule activityTestRule) {
109110
* </p>
110111
*
111112
* @param activityTestRule the activityTestRule
112-
* @param Context an object that has a {@code getReactNativeHost()} method
113+
* @param context an object that has a {@code getReactNativeHost()} method
113114
*/
114115
public static void runTests(ActivityTestRule activityTestRule, @NonNull final Context context) {
115116
sActivityTestRule = activityTestRule;
@@ -173,7 +174,7 @@ public static void startActivityFromUrl(String url) {
173174
// TODO: Can't get to launch the app back to previous instance using only intents from inside instrumentation (not sure why).
174175
// this is a (hopefully) temp solution. Should use intents instead.
175176
public static void launchMainActivity() throws RemoteException, UiObjectNotFoundException {
176-
final Context targetContext = InstrumentationRegistry.getTargetContext();
177+
final Context targetContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
177178

178179
// Intent intent = targetContext.getPackageManager().getLaunchIntentForPackage(targetContext.getPackageName());
179180
// intent.setPackage(null);

detox/android/detox/src/main/java/com/wix/detox/DetoxActionHandlers.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.wix.detox
22

33
import android.content.Context
4-
import android.support.test.espresso.IdlingResource
54
import android.util.Log
5+
import androidx.test.espresso.IdlingResource
66
import com.wix.invoke.MethodInvocation
77
import org.json.JSONArray
88
import org.json.JSONException

detox/android/detox/src/main/java/com/wix/detox/DetoxManager.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.os.Handler;
66
import android.os.Looper;
77
import android.support.annotation.NonNull;
8-
import android.support.test.InstrumentationRegistry;
98
import android.util.Log;
109

1110
import com.wix.detox.systeminfo.Environment;
@@ -14,10 +13,10 @@
1413
import java.util.HashMap;
1514
import java.util.Map;
1615

16+
import androidx.test.platform.app.InstrumentationRegistry;
1717
import kotlin.Unit;
1818
import kotlin.jvm.functions.Function0;
1919

20-
2120
/**
2221
* Created by rotemm on 04/01/2017.
2322
*/

detox/android/detox/src/main/java/com/wix/detox/ReactNativeSupport.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import android.content.Context;
44
import android.os.Looper;
55
import android.support.annotation.NonNull;
6-
import android.support.test.InstrumentationRegistry;
7-
import android.support.test.espresso.IdlingRegistry;
8-
import android.support.test.espresso.base.IdlingResourceRegistry;
96
import android.util.Log;
107

118
import com.facebook.react.ReactApplication;
@@ -22,6 +19,10 @@
2219

2320
import java.util.concurrent.CountDownLatch;
2421
import java.util.concurrent.TimeUnit;
22+
23+
import androidx.test.espresso.IdlingRegistry;
24+
import androidx.test.espresso.base.IdlingResourceRegistry;
25+
import androidx.test.platform.app.InstrumentationRegistry;
2526
import okhttp3.OkHttpClient;
2627

2728

@@ -207,7 +208,7 @@ private static void setupReactNativeQueueInterrogators(@NonNull Object reactCont
207208
IdlingRegistry.getInstance().registerLooperAsIdlingResource(JSMessageQueue);
208209
IdlingRegistry.getInstance().registerLooperAsIdlingResource(JMativeModulesMessageQueue);
209210

210-
IdlingResourceRegistry irr = Reflect.on("android.support.test.espresso.Espresso").field("baseRegistry").get();
211+
IdlingResourceRegistry irr = Reflect.on(androidx.test.espresso.Espresso.class).field("baseRegistry").get();
211212
irr.sync(IdlingRegistry.getInstance().getResources(), IdlingRegistry.getInstance().getLoopers());
212213
}
213214

detox/android/detox/src/main/java/com/wix/detox/TestEngineFacade.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.wix.detox
22

33
import android.content.Context
4-
import android.support.test.espresso.Espresso
5-
import android.support.test.espresso.IdlingResource
4+
import androidx.test.espresso.Espresso
5+
import androidx.test.espresso.IdlingResource
66
import com.wix.detox.espresso.EspressoDetox
77
import com.wix.detox.espresso.UiAutomatorHelper
88

detox/android/detox/src/main/java/com/wix/detox/espresso/AnimatedModuleIdlingResource.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.wix.detox.espresso;
22

33
import android.support.annotation.NonNull;
4-
import android.support.test.espresso.IdlingResource;
54
import android.util.Log;
65
import android.view.Choreographer;
76

@@ -10,6 +9,8 @@
109
import org.joor.Reflect;
1110
import org.joor.ReflectException;
1211

12+
import androidx.test.espresso.IdlingResource;
13+
1314
/**
1415
* Created by simonracz on 25/08/2017.
1516
*/

detox/android/detox/src/main/java/com/wix/detox/espresso/DetoxAction.java

+17-16
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
package com.wix.detox.espresso;
22

3-
import android.support.test.espresso.UiController;
4-
import android.support.test.espresso.ViewAction;
5-
import android.support.test.espresso.action.CoordinatesProvider;
6-
import android.support.test.espresso.action.GeneralClickAction;
7-
import android.support.test.espresso.action.GeneralLocation;
8-
import android.support.test.espresso.action.GeneralSwipeAction;
9-
import android.support.test.espresso.action.Press;
10-
import android.support.test.espresso.action.Swipe;
11-
import android.support.test.espresso.action.Tap;
123
import android.view.InputDevice;
134
import android.view.MotionEvent;
145
import android.view.View;
@@ -18,13 +9,23 @@
189

1910
import org.hamcrest.Matcher;
2011

21-
import static android.support.test.espresso.action.ViewActions.actionWithAssertions;
22-
import static android.support.test.espresso.action.ViewActions.swipeDown;
23-
import static android.support.test.espresso.action.ViewActions.swipeLeft;
24-
import static android.support.test.espresso.action.ViewActions.swipeRight;
25-
import static android.support.test.espresso.action.ViewActions.swipeUp;
26-
import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
27-
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
12+
import androidx.test.espresso.UiController;
13+
import androidx.test.espresso.ViewAction;
14+
import androidx.test.espresso.action.CoordinatesProvider;
15+
import androidx.test.espresso.action.GeneralClickAction;
16+
import androidx.test.espresso.action.GeneralLocation;
17+
import androidx.test.espresso.action.GeneralSwipeAction;
18+
import androidx.test.espresso.action.Press;
19+
import androidx.test.espresso.action.Swipe;
20+
import androidx.test.espresso.action.Tap;
21+
22+
import static androidx.test.espresso.action.ViewActions.actionWithAssertions;
23+
import static androidx.test.espresso.action.ViewActions.swipeDown;
24+
import static androidx.test.espresso.action.ViewActions.swipeLeft;
25+
import static androidx.test.espresso.action.ViewActions.swipeRight;
26+
import static androidx.test.espresso.action.ViewActions.swipeUp;
27+
import static androidx.test.espresso.matcher.ViewMatchers.isAssignableFrom;
28+
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
2829
import static org.hamcrest.Matchers.allOf;
2930

3031

detox/android/detox/src/main/java/com/wix/detox/espresso/DetoxAssertion.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
package com.wix.detox.espresso;
22

3-
import android.support.test.espresso.Espresso;
4-
import android.support.test.espresso.EspressoException;
5-
import android.support.test.espresso.ViewAction;
6-
import android.support.test.espresso.ViewInteraction;
73
import android.view.View;
84

95
import junit.framework.AssertionFailedError;
106

117
import org.hamcrest.Matcher;
12-
import org.hamcrest.Matchers;
138

14-
import static android.support.test.espresso.Espresso.onView;
15-
import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
16-
import static android.support.test.espresso.assertion.ViewAssertions.matches;
17-
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
9+
import androidx.test.espresso.EspressoException;
10+
import androidx.test.espresso.ViewAction;
11+
import androidx.test.espresso.ViewInteraction;
12+
13+
import static androidx.test.espresso.Espresso.onView;
14+
import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
15+
import static androidx.test.espresso.assertion.ViewAssertions.matches;
16+
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
1817
import static org.hamcrest.Matchers.not;
1918

2019
/**

detox/android/detox/src/main/java/com/wix/detox/espresso/DetoxMatcher.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.wix.detox.espresso;
22

3-
import android.support.test.espresso.matcher.ViewMatchers;
43
import android.view.View;
54

65
import org.hamcrest.BaseMatcher;
76
import org.hamcrest.Description;
87
import org.hamcrest.Matcher;
98

10-
import static android.support.test.espresso.matcher.ViewMatchers.Visibility;
11-
import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
12-
import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
13-
import static android.support.test.espresso.matcher.ViewMatchers.isDescendantOfA;
14-
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
15-
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayingAtLeast;
16-
import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
17-
import static android.support.test.espresso.matcher.ViewMatchers.withTagValue;
18-
import static android.support.test.espresso.matcher.ViewMatchers.withText;
9+
import androidx.test.espresso.matcher.ViewMatchers;
10+
import androidx.test.espresso.matcher.ViewMatchers.Visibility;
11+
12+
import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
13+
import static androidx.test.espresso.matcher.ViewMatchers.isAssignableFrom;
14+
import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
15+
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
16+
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayingAtLeast;
17+
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
18+
import static androidx.test.espresso.matcher.ViewMatchers.withTagValue;
19+
import static androidx.test.espresso.matcher.ViewMatchers.withText;
1920
import static org.hamcrest.Matchers.allOf;
2021
import static org.hamcrest.Matchers.anyOf;
2122
import static org.hamcrest.Matchers.is;

detox/android/detox/src/main/java/com/wix/detox/espresso/DetoxViewActions.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.wix.detox.espresso;
22

3-
import android.support.test.espresso.UiController;
4-
import android.support.test.espresso.ViewAction;
5-
import android.support.test.espresso.action.ViewActions;
63
import android.view.View;
74

85
import com.wix.detox.ReactNativeSupport;
96

107
import org.hamcrest.Matcher;
118

9+
import androidx.test.espresso.UiController;
10+
import androidx.test.espresso.ViewAction;
11+
import androidx.test.espresso.action.ViewActions;
12+
1213
/**
1314
* An alternative to {@link ViewActions} - providing alternative implementations, where needed.
1415
*/

detox/android/detox/src/main/java/com/wix/detox/espresso/EspressoDetox.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@
55
import android.content.ContextWrapper;
66
import android.content.pm.ActivityInfo;
77
import android.os.Handler;
8-
import android.support.test.InstrumentationRegistry;
9-
import android.support.test.espresso.Espresso;
10-
import android.support.test.espresso.IdlingResource;
11-
import android.support.test.espresso.UiController;
12-
import android.support.test.espresso.ViewAction;
13-
import android.support.test.espresso.ViewInteraction;
148
import android.util.Log;
159
import android.view.View;
1610
import android.view.ViewGroup;
@@ -23,13 +17,19 @@
2317

2418
import java.util.ArrayList;
2519

26-
import static android.support.test.espresso.Espresso.onView;
27-
import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
20+
import androidx.test.espresso.Espresso;
21+
import androidx.test.espresso.IdlingResource;
22+
import androidx.test.espresso.UiController;
23+
import androidx.test.espresso.ViewAction;
24+
import androidx.test.espresso.ViewInteraction;
25+
import androidx.test.platform.app.InstrumentationRegistry;
26+
27+
import static androidx.test.espresso.Espresso.onView;
28+
import static androidx.test.espresso.matcher.ViewMatchers.isRoot;
2829

2930
/**
3031
* Created by rotemm on 26/12/2016.
3132
*/
32-
3333
public class EspressoDetox {
3434
private static final String LOG_TAG = "detox";
3535

@@ -121,7 +121,7 @@ public static ArrayList<IdlingResource> getBusyEspressoResources() {
121121
// 1. we want to use postAtFrontOfQueue()
122122
// 2. we want it to be synchronous
123123
final ArrayList<IdlingResource> busyResources = new ArrayList<>();
124-
final Handler handler = new Handler(InstrumentationRegistry.getTargetContext().getMainLooper());
124+
final Handler handler = new Handler(InstrumentationRegistry.getInstrumentation().getTargetContext().getMainLooper());
125125
final SyncRunnable sr = new SyncRunnable(new Runnable() {
126126
@Override
127127
public void run() {

detox/android/detox/src/main/java/com/wix/detox/espresso/MultiTap.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package com.wix.detox.espresso;
22

33
import android.os.Build;
4-
import android.support.test.espresso.UiController;
5-
import android.support.test.espresso.action.MotionEvents;
6-
import android.support.test.espresso.action.MotionEvents.DownResultHolder;
7-
import android.support.test.espresso.action.Tapper;
84
import android.util.Log;
95
import android.view.ViewConfiguration;
106

117
import java.lang.reflect.InvocationTargetException;
128
import java.lang.reflect.Method;
139

14-
import static android.support.test.espresso.core.internal.deps.guava.base.Preconditions.checkNotNull;
10+
import androidx.test.espresso.UiController;
11+
import androidx.test.espresso.action.MotionEvents;
12+
import androidx.test.espresso.action.MotionEvents.DownResultHolder;
13+
import androidx.test.espresso.action.Tapper;
14+
15+
import static androidx.test.espresso.core.internal.deps.guava.base.Preconditions.checkNotNull;
1516

1617

1718
public class MultiTap implements Tapper {

detox/android/detox/src/main/java/com/wix/detox/espresso/ReactBridgeIdlingResource.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.wix.detox.espresso;
22

3-
import android.support.test.espresso.IdlingResource;
43
import android.util.Log;
54

65
import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener;
76
import com.facebook.react.bridge.ReactContext;
87

98
import java.util.concurrent.atomic.AtomicBoolean;
109

10+
import androidx.test.espresso.IdlingResource;
11+
12+
import static androidx.test.espresso.IdlingResource.ResourceCallback;
13+
1114
/**
1215
* Created by simonracz on 01/06/2017.
1316
*/

0 commit comments

Comments
 (0)