Skip to content

Commit daf4067

Browse files
mdvaccafacebook-github-bot
authored andcommitted
Enable Fabric test using Fabric C++ implementation
Summary: This diff: - Disables all tests but one of FabricViewTest - Disables all tests but one of FabricBenchmarkTest - Changes ReactAppTestActivity to run with Hermes The reason there is only one test running in each test class, is because the tear down process of Fabric is still flaky and it produces crashes when restarting RN. We are working on this right now and we will enable the rest of the tests after that's fixed. Reviewed By: achen1 Differential Revision: D9890700 fbshipit-source-id: a8716481eff15b77bd12b38aaaefd4e282c71f3b
1 parent 23dfd10 commit daf4067

File tree

5 files changed

+29
-5
lines changed

5 files changed

+29
-5
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,9 @@ public void loadBundle(ReactInstanceSpecForTest spec, String bundleName, boolean
208208
.getReactInstanceManagerBuilder()
209209
.setApplication(getApplication())
210210
.setBundleAssetName(bundleName);
211+
if (spec.getJavaScriptExecutorFactory() != null) {
212+
builder.setJavaScriptExecutorFactory(spec.getJavaScriptExecutorFactory());
213+
}
211214
if (!spec.getAlternativeReactPackagesForTest().isEmpty()) {
212215
builder.addPackages(spec.getAlternativeReactPackagesForTest());
213216
} else {

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99

1010
import android.annotation.SuppressLint;
1111
import com.facebook.react.ReactPackage;
12+
import com.facebook.react.bridge.JavaScriptExecutorFactory;
1213
import com.facebook.react.bridge.JavaScriptModule;
1314
import com.facebook.react.bridge.NativeModule;
1415
import com.facebook.react.uimanager.ViewManager;
1516
import java.util.ArrayList;
1617
import java.util.Arrays;
1718
import java.util.List;
19+
import javax.annotation.Nullable;
1820

1921
/**
2022
* A spec that allows a test to add additional NativeModules/JS modules to the ReactInstance. This
@@ -29,12 +31,18 @@ public class ReactInstanceSpecForTest {
2931
private final List<Class<? extends JavaScriptModule>> mJSModuleSpecs = new ArrayList<>();
3032
private final List<ViewManager> mViewManagers = new ArrayList<>();
3133
private final ArrayList<ReactPackage> mReactPackages = new ArrayList<>();
34+
@Nullable private JavaScriptExecutorFactory mJavaScriptExecutorFactory = null;
3235

3336
public ReactInstanceSpecForTest addNativeModule(NativeModule module) {
3437
mNativeModules.add(module);
3538
return this;
3639
}
3740

41+
public ReactInstanceSpecForTest setJavaScriptExecutorFactory(JavaScriptExecutorFactory javaScriptExecutorFactory) {
42+
mJavaScriptExecutorFactory = javaScriptExecutorFactory;
43+
return this;
44+
}
45+
3846
public ReactInstanceSpecForTest setPackage(ReactPackage reactPackage) {
3947
if (!mReactPackages.isEmpty()) {
4048
throw new IllegalStateException(
@@ -66,6 +74,11 @@ public ReactPackage getAlternativeReactPackageForTest() {
6674
return mReactPackages.get(0);
6775
}
6876

77+
@Nullable
78+
public JavaScriptExecutorFactory getJavaScriptExecutorFactory() {
79+
return mJavaScriptExecutorFactory;
80+
}
81+
6982
public List<ReactPackage> getAlternativeReactPackagesForTest() {
7083
return mReactPackages;
7184
}

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
import android.test.ActivityInstrumentationTestCase2;
1212
import android.view.View;
1313
import android.view.ViewGroup;
14+
import com.facebook.react.bridge.JavaScriptExecutorFactory;
1415
import com.facebook.react.bridge.JavaScriptModule;
1516
import com.facebook.react.bridge.ReactContext;
1617
import com.facebook.react.testing.idledetection.IdleWaiter;
18+
import javax.annotation.Nullable;
1719

1820
/**
1921
* Base class for instrumentation tests that runs React based application.
@@ -27,6 +29,9 @@ public abstract class ReactInstrumentationTest extends
2729

2830
protected StringRecordingModule mRecordingModule;
2931

32+
@Nullable
33+
protected JavaScriptExecutorFactory mJavaScriptExecutorFactory = null;
34+
3035
public ReactInstrumentationTest() {
3136
super(ReactAppTestActivity.class);
3237
}
@@ -49,7 +54,7 @@ protected void setUp() throws Exception {
4954
/**
5055
* Renders this component within this test's activity
5156
*/
52-
public void renderComponent(final String componentName) throws Exception {
57+
public void renderComponent(final String componentName) {
5358
getActivity().renderComponent(componentName, null);
5459
waitForBridgeAndUIIdle();
5560
}
@@ -98,7 +103,12 @@ protected <T extends JavaScriptModule> T getJSModule(Class<T> jsInterface) {
98103
* Override this method to provide extra native modules to be loaded before the app starts
99104
*/
100105
protected ReactInstanceSpecForTest createReactInstanceSpecForTest() {
101-
return new ReactInstanceSpecForTest().addNativeModule(mRecordingModule);
106+
ReactInstanceSpecForTest reactInstanceSpecForTest =
107+
new ReactInstanceSpecForTest().addNativeModule(mRecordingModule);
108+
if (mJavaScriptExecutorFactory != null) {
109+
reactInstanceSpecForTest.setJavaScriptExecutorFactory(mJavaScriptExecutorFactory);
110+
}
111+
return reactInstanceSpecForTest;
102112
}
103113

104114
/**

ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.facebook.react.common.annotations.VisibleForTesting;
2626
import com.facebook.systrace.Systrace;
2727
import com.facebook.systrace.TraceListener;
28-
import java.lang.annotation.Native;
2928
import java.lang.ref.WeakReference;
3029
import java.util.ArrayList;
3130
import java.util.Collection;

ReactAndroid/src/main/java/com/facebook/react/bridge/ProxyJavaScriptExecutor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77

88
package com.facebook.react.bridge;
99

10-
import javax.annotation.Nullable;
11-
1210
import com.facebook.jni.HybridData;
1311
import com.facebook.proguard.annotations.DoNotStrip;
12+
import javax.annotation.Nullable;
1413

1514
/**
1615
* JavaScript executor that delegates JS calls processed by native code back to a java version

0 commit comments

Comments
 (0)