From 3cfda77fba8220b56e7f03f6acf29491d59df1b4 Mon Sep 17 00:00:00 2001 From: Christoph Purrer Date: Fri, 23 Oct 2026 07:50:32 -0700 Subject: [PATCH 1/2] Bridgeless-context ReactAccessibilityDelegateTest (#59265) Summary: Replace the deprecated `BridgeReactContext` + mock `CatalystInstance` setup with a spied `createTestReactApplicationContext`, stub `hasActiveReactInstance` for the dispatch test, and add the `ShadowSoLoader` Robolectric shadow. Changelog: [Internal] Reviewed By: mdvacca, Abbondanzo Differential Revision: D126570685 --- .../uimanager/ReactAccessibilityDelegateTest.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactAccessibilityDelegateTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactAccessibilityDelegateTest.kt index bb87fb9e0812..63680191f85b 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactAccessibilityDelegateTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactAccessibilityDelegateTest.kt @@ -13,10 +13,10 @@ import android.os.Bundle import android.view.accessibility.AccessibilityNodeInfo import androidx.core.view.accessibility.AccessibilityNodeInfoCompat import com.facebook.react.R -import com.facebook.react.bridge.BridgeReactContext import com.facebook.react.bridge.JavaOnlyArray import com.facebook.react.bridge.JavaOnlyMap -import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext import com.facebook.react.bridge.UIManager import com.facebook.react.bridge.WritableMap import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests @@ -26,33 +26,35 @@ import com.facebook.react.uimanager.events.EventDispatcher import com.facebook.react.uimanager.events.RCTEventEmitter import com.facebook.react.views.view.ReactViewGroup import com.facebook.testutils.shadows.ShadowArguments +import com.facebook.testutils.shadows.ShadowSoLoader import org.assertj.core.api.Assertions.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mockStatic import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.doReturn import org.mockito.kotlin.eq import org.mockito.kotlin.mock +import org.mockito.kotlin.spy import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.Config -@Config(shadows = [ShadowArguments::class]) +@Config(shadows = [ShadowArguments::class, ShadowSoLoader::class]) @RunWith(RobolectricTestRunner::class) class ReactAccessibilityDelegateTest { private lateinit var view: ReactViewGroup - private lateinit var reactContext: BridgeReactContext + private lateinit var reactContext: ReactApplicationContext private lateinit var themedReactContext: ThemedReactContext private lateinit var accessibilityDelegate: ReactAccessibilityDelegate @Before fun setUp() { ReactNativeFeatureFlagsForTests.setUp() - reactContext = BridgeReactContext(RuntimeEnvironment.getApplication()) - reactContext.initializeWithInstance(createMockCatalystInstance()) + reactContext = spy(createTestReactApplicationContext(RuntimeEnvironment.getApplication())) themedReactContext = ThemedReactContext(reactContext, reactContext, null, -1) view = ReactViewGroup(themedReactContext).apply { id = 100 } accessibilityDelegate = ReactAccessibilityDelegate(view, false, 0) @@ -266,6 +268,7 @@ class ReactAccessibilityDelegateTest { whenever(uiManager.eventDispatcher).thenReturn(eventDispatcher) val uiManagerHelper = mockStatic(UIManagerHelper::class.java) try { + doReturn(true).whenever(reactContext).hasActiveReactInstance() uiManagerHelper .`when` { UIManagerHelper.getUIManager(themedReactContext, UIManagerType.FABRIC) From df585ca7db8bb129d7493d4415e8de7403f4a26f Mon Sep 17 00:00:00 2001 From: Christoph Purrer Date: Fri, 23 Oct 2026 07:50:32 -0700 Subject: [PATCH 2/2] Bridgeless-context ReactScrollViewPropertyTest (#59266) Summary: Replace the deprecated `BridgeReactContext` + mock `CatalystInstance` setup with `createTestReactApplicationContext` and add the `ShadowSoLoader` Robolectric shadow the bridgeless helper needs. Changelog: [Internal] Reviewed By: Abbondanzo, mdvacca Differential Revision: D126570686 --- .../views/scroll/ReactScrollViewPropertyTest.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/scroll/ReactScrollViewPropertyTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/scroll/ReactScrollViewPropertyTest.kt index 78fd8948678b..4f9c3454bfae 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/scroll/ReactScrollViewPropertyTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/scroll/ReactScrollViewPropertyTest.kt @@ -13,10 +13,9 @@ package com.facebook.react.views.scroll import android.annotation.SuppressLint import android.util.DisplayMetrics import android.view.View -import com.facebook.react.bridge.BridgeReactContext -import com.facebook.react.bridge.CatalystInstance import com.facebook.react.bridge.JavaOnlyMap -import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests import com.facebook.react.uimanager.BackgroundStyleApplicator import com.facebook.react.uimanager.DisplayMetricsHolder @@ -25,6 +24,7 @@ import com.facebook.react.uimanager.LengthPercentageType import com.facebook.react.uimanager.ReactStylesDiffMap import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.style.BorderRadiusProp +import com.facebook.testutils.shadows.ShadowSoLoader import org.assertj.core.api.Assertions.assertThat import org.junit.After import org.junit.Before @@ -32,22 +32,21 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment +import org.robolectric.annotation.Config /** Verifies border radius properties applied by the vertical and horizontal ScrollView managers. */ @SuppressLint("DeprecatedClass", "DeprecatedMethod") @RunWith(RobolectricTestRunner::class) +@Config(shadows = [ShadowSoLoader::class]) class ReactScrollViewPropertyTest { - private lateinit var context: BridgeReactContext - private lateinit var catalystInstanceMock: CatalystInstance + private lateinit var context: ReactApplicationContext private lateinit var themedContext: ThemedReactContext @Before fun setup() { ReactNativeFeatureFlagsForTests.setUp() - context = BridgeReactContext(RuntimeEnvironment.getApplication()) - catalystInstanceMock = createMockCatalystInstance() - context.initializeWithInstance(catalystInstanceMock) + context = createTestReactApplicationContext(RuntimeEnvironment.getApplication()) themedContext = ThemedReactContext(context, context, null, -1) DisplayMetricsHolder.setScreenDisplayMetrics(DisplayMetrics()) }