diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java index 815bad0faddcc5..af4de282b23b24 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java @@ -9,6 +9,7 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.uimanager.annotations.ReactProp; +import java.util.concurrent.ConcurrentHashMap; /** * Base class that should be suitable for the majority of subclasses of {@link ViewManager}. @@ -35,6 +36,8 @@ public abstract class BaseViewManager testIDs = new ConcurrentHashMap<>(); + /** * Used to locate views in end-to-end (UI) tests. */ @@ -84,6 +87,13 @@ public void setRenderToHardwareTexture(T view, boolean useHWTexture) { @ReactProp(name = PROP_TEST_ID) public void setTestId(T view, String testId) { + if (!testIDs.containsKey(testId)) { + testIDs.put(testId, view.getResources().getIdentifier(testId, "id", view.getContext().getPackageName())); + } + int mappedTestId = testIDs.get(testId); + if (mappedTestId != 0) { + view.setId(mappedTestId); + } view.setTag(testId); }