diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java index 7d89ab5b2ec369..0134b1057734f9 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java @@ -37,7 +37,7 @@ import com.facebook.react.testing.idledetection.ReactBridgeIdleSignaler; import com.facebook.react.testing.idledetection.ReactIdleDetectionUtil; import com.facebook.react.uimanager.ViewManagerRegistry; -import java.util.Arrays; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -250,7 +250,8 @@ public void loadBundle( public List getJSIModules( final ReactApplicationContext reactApplicationContext, final JavaScriptContextHolder jsContext) { - return Arrays.asList( + List packages = new ArrayList<>(); + packages.add( new JSIModuleSpec() { @Override public JSIModuleType getJSIModuleType() { @@ -276,6 +277,10 @@ public UIManager get() { }; } }); + if (spec.getJSIModuleBuilder() != null) { + packages.addAll(spec.getJSIModuleBuilder().build(reactApplicationContext)); + } + return packages; } }); diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java index 8422eb53729e74..6b96c8232b9da9 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java @@ -11,10 +11,12 @@ import androidx.annotation.Nullable; import com.facebook.react.ReactPackage; import com.facebook.react.ReactPackageTurboModuleManagerDelegate; +import com.facebook.react.bridge.JSIModuleSpec; import com.facebook.react.bridge.JavaScriptExecutorFactory; import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.NativeModuleCallExceptionHandler; +import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; import java.util.ArrayList; import java.util.Arrays; @@ -28,6 +30,11 @@ @SuppressLint("JavatestsIncorrectFolder") public class ReactInstanceSpecForTest { + public abstract static class JSIModuleBuilder { + @Nullable + protected abstract List build(ReactApplicationContext context); + } + private final List mNativeModules = new ArrayList(Arrays.asList(new FakeWebSocketModule())); private final List> mJSModuleSpecs = new ArrayList<>(); @@ -37,6 +44,7 @@ public class ReactInstanceSpecForTest { @Nullable private FabricUIManagerFactory mFabricUIManagerFactory = null; @Nullable private JavaScriptExecutorFactory mJavaScriptExecutorFactory = null; @Nullable private ReactPackageTurboModuleManagerDelegate.Builder mTMMDelegateBuilder = null; + @Nullable private JSIModuleBuilder mJSIModuleBuilder = null; public ReactInstanceSpecForTest addNativeModule(NativeModule module) { mNativeModules.add(module); @@ -85,11 +93,22 @@ public ReactInstanceSpecForTest setReactPackageTurboModuleManagerDelegateBuilder return this; } - protected @Nullable ReactPackageTurboModuleManagerDelegate.Builder + @Nullable + protected ReactPackageTurboModuleManagerDelegate.Builder getReactPackageTurboModuleManagerDelegateBuilder() { return mTMMDelegateBuilder; } + public ReactInstanceSpecForTest setJSIModuleBuilder(@Nullable JSIModuleBuilder builder) { + mJSIModuleBuilder = builder; + return this; + } + + @Nullable + protected JSIModuleBuilder getJSIModuleBuilder() { + return mJSIModuleBuilder; + } + public ReactInstanceSpecForTest addPackages(List reactPackages) { mReactPackages.addAll(reactPackages); return this; diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstrumentationTest.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstrumentationTest.java index 40699a74e4f4b6..a5ac40a93d9ec9 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstrumentationTest.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstrumentationTest.java @@ -96,11 +96,17 @@ protected T getJSModule(Class jsInterface) { return getReactContext().getJSModule(jsInterface); } - protected @Nullable ReactPackageTurboModuleManagerDelegate.Builder + @Nullable + protected ReactPackageTurboModuleManagerDelegate.Builder getReactPackageTurboModuleManagerDelegateBuilder() { return null; } + @Nullable + protected ReactInstanceSpecForTest.JSIModuleBuilder getJSIModuleBuilder() { + return null; + } + /** Override this method to provide extra native modules to be loaded before the app starts */ protected ReactInstanceSpecForTest createReactInstanceSpecForTest() { ReactInstanceSpecForTest reactInstanceSpecForTest = @@ -113,6 +119,7 @@ protected ReactInstanceSpecForTest createReactInstanceSpecForTest() { } reactInstanceSpecForTest.setReactPackageTurboModuleManagerDelegateBuilder( getReactPackageTurboModuleManagerDelegateBuilder()); + reactInstanceSpecForTest.setJSIModuleBuilder(getJSIModuleBuilder()); return reactInstanceSpecForTest; }