Skip to content

Commit dc22bd6

Browse files
sahrensfacebook-github-bot
authored andcommitted
Add fb4a native modules to snapshot tests
Reviewed By: achen1 Differential Revision: D5599659 fbshipit-source-id: ca9f8806212e6b3551eaebb95903bc168110b4ec
1 parent 5d58831 commit dc22bd6

File tree

3 files changed

+46
-24
lines changed

3 files changed

+46
-24
lines changed

ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java

+15-13
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,12 @@
88

99
package com.facebook.react.testing;
1010

11-
import javax.annotation.Nullable;
12-
13-
import java.util.concurrent.CountDownLatch;
14-
import java.util.concurrent.TimeUnit;
15-
1611
import android.graphics.Bitmap;
1712
import android.os.Bundle;
1813
import android.support.v4.app.FragmentActivity;
1914
import android.view.View;
2015
import android.view.ViewTreeObserver;
2116
import android.widget.FrameLayout;
22-
2317
import com.facebook.infer.annotation.Assertions;
2418
import com.facebook.react.ReactInstanceManager;
2519
import com.facebook.react.ReactInstanceManagerBuilder;
@@ -31,6 +25,9 @@
3125
import com.facebook.react.testing.idledetection.ReactBridgeIdleSignaler;
3226
import com.facebook.react.testing.idledetection.ReactIdleDetectionUtil;
3327
import com.facebook.react.uimanager.UIImplementationProvider;
28+
import java.util.concurrent.CountDownLatch;
29+
import java.util.concurrent.TimeUnit;
30+
import javax.annotation.Nullable;
3431

3532
public class ReactAppTestActivity extends FragmentActivity implements
3633
DefaultHardwareBackBtnHandler
@@ -39,7 +36,7 @@ public class ReactAppTestActivity extends FragmentActivity implements
3936
private static final String DEFAULT_BUNDLE_NAME = "AndroidTestBundle.js";
4037
private static final int ROOT_VIEW_ID = 8675309;
4138
// we need a bigger timeout for CI builds because they run on a slow emulator
42-
private static final long IDLE_TIMEOUT_MS = 60000;
39+
private static final long IDLE_TIMEOUT_MS = 120000;
4340

4441
private CountDownLatch mLayoutEvent = new CountDownLatch(1);
4542
private @Nullable ReactBridgeIdleSignaler mBridgeIdleSignaler;
@@ -164,16 +161,21 @@ public void loadApp(
164161
mBridgeIdleSignaler = new ReactBridgeIdleSignaler();
165162

166163
ReactInstanceManagerBuilder builder =
167-
ReactTestHelper.getReactTestFactory().getReactInstanceManagerBuilder()
168-
.setApplication(getApplication())
169-
.setBundleAssetName(bundleName)
164+
ReactTestHelper.getReactTestFactory()
165+
.getReactInstanceManagerBuilder()
166+
.setApplication(getApplication())
167+
.setBundleAssetName(bundleName);
168+
if (!spec.getAlternativeReactPackagesForTest().isEmpty()) {
169+
builder.addPackages(spec.getAlternativeReactPackagesForTest());
170+
} else {
171+
builder.addPackage(new MainReactPackage());
172+
}
173+
builder
174+
.addPackage(new InstanceSpecForTestPackage(spec))
170175
// By not setting a JS module name, we force the bundle to be always loaded from
171176
// assets, not the devserver, even if dev mode is enabled (such as when testing redboxes).
172177
// This makes sense because we never run the devserver in tests.
173178
//.setJSMainModuleName()
174-
.addPackage(spec.getAlternativeReactPackageForTest() != null ?
175-
spec.getAlternativeReactPackageForTest() : new MainReactPackage())
176-
.addPackage(new InstanceSpecForTestPackage(spec))
177179
.setUseDeveloperSupport(useDevSupport)
178180
.setBridgeIdleDebugListener(mBridgeIdleSignaler)
179181
.setInitialLifecycleState(mLifecycleState)

ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java

+25-10
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,14 @@
88

99
package com.facebook.react.testing;
1010

11-
import java.util.ArrayList;
12-
import java.util.Arrays;
13-
import java.util.List;
14-
1511
import android.annotation.SuppressLint;
16-
17-
import com.facebook.react.bridge.NativeModule;
12+
import com.facebook.react.ReactPackage;
1813
import com.facebook.react.bridge.JavaScriptModule;
14+
import com.facebook.react.bridge.NativeModule;
1915
import com.facebook.react.uimanager.ViewManager;
20-
import com.facebook.react.ReactPackage;
16+
import java.util.ArrayList;
17+
import java.util.Arrays;
18+
import java.util.List;
2119

2220
/**
2321
* A spec that allows a test to add additional NativeModules/JS modules to the ReactInstance. This
@@ -31,15 +29,24 @@ public class ReactInstanceSpecForTest {
3129
new ArrayList<NativeModule>(Arrays.asList(new FakeWebSocketModule()));
3230
private final List<Class<? extends JavaScriptModule>> mJSModuleSpecs = new ArrayList<>();
3331
private final List<ViewManager> mViewManagers = new ArrayList<>();
34-
private ReactPackage mReactPackage = null;
32+
private final ArrayList<ReactPackage> mReactPackages = new ArrayList<>();
3533

3634
public ReactInstanceSpecForTest addNativeModule(NativeModule module) {
3735
mNativeModules.add(module);
3836
return this;
3937
}
4038

4139
public ReactInstanceSpecForTest setPackage(ReactPackage reactPackage) {
42-
mReactPackage = reactPackage;
40+
if (!mReactPackages.isEmpty()) {
41+
throw new IllegalStateException(
42+
"setPackage is not allowed after addPackages. " + reactPackage);
43+
}
44+
mReactPackages.add(reactPackage);
45+
return this;
46+
}
47+
48+
public ReactInstanceSpecForTest addPackages(List<ReactPackage> reactPackages) {
49+
mReactPackages.addAll(reactPackages);
4350
return this;
4451
}
4552

@@ -53,7 +60,15 @@ public List<NativeModule> getExtraNativeModulesForTest() {
5360
}
5461

5562
public ReactPackage getAlternativeReactPackageForTest() {
56-
return mReactPackage;
63+
if (mReactPackages.size() > 1) {
64+
throw new IllegalStateException(
65+
"Multiple packages were added - use getAlternativeReactPackagesForTest instead.");
66+
}
67+
return mReactPackages.get(0);
68+
}
69+
70+
public List<ReactPackage> getAlternativeReactPackagesForTest() {
71+
return mReactPackages;
5772
}
5873

5974
public List<ViewManager> getExtraViewManagers() {

ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import android.app.Activity;
66
import android.app.Application;
77
import com.facebook.infer.annotation.Assertions;
8-
import com.facebook.react.bridge.JavaScriptExecutorFactory;
98
import com.facebook.react.bridge.JSBundleLoader;
109
import com.facebook.react.bridge.JSCJavaScriptExecutorFactory;
10+
import com.facebook.react.bridge.JavaScriptExecutorFactory;
1111
import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
1212
import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener;
1313
import com.facebook.react.common.LifecycleState;
@@ -125,6 +125,11 @@ public ReactInstanceManagerBuilder addPackage(ReactPackage reactPackage) {
125125
return this;
126126
}
127127

128+
public ReactInstanceManagerBuilder addPackages(List<ReactPackage> reactPackages) {
129+
mPackages.addAll(reactPackages);
130+
return this;
131+
}
132+
128133
public ReactInstanceManagerBuilder setBridgeIdleDebugListener(
129134
NotThreadSafeBridgeIdleDebugListener bridgeIdleDebugListener) {
130135
mBridgeIdleDebugListener = bridgeIdleDebugListener;

0 commit comments

Comments
 (0)