Improve e2e times by using deep links to open examples (#51786)

Summary:
This is similar to https://github.com/facebook/react-native/issues/51590, but way better as it improves indirectly the flakiness for tests in the API tab. When the logbox is shown in debug mode, it interferes and sometimes makes that test fail, so this prevents that.

Android also takes more advantage of the improvement with this change, the previous PR only improved significantly iOS.

All the screens inside the RNTester seem to have a deeplink, which makes it easier to open the tests as the test cases are intended to check mostly specific behaviour of RN, and it is not necessary to have a middle step to find the specific components.

Maybe it would be good to run this a few times in CI to see if there are no side effects or flakiness added by opening deep links on CI builds.

## Changelog:

[INTERNAL] - Improve e2e times by using deep links to open examples

Pull Request resolved: https://github.com/facebook/react-native/pull/51786

Test Plan:
```sh
yarn e2e-test-android
yarn e2e-test-ios
```

iOS:

| Before | After |
|--------|-------|
| <img width="387" alt="image" src="https://github.com/user-attachments/assets/03ccd957-d401-4944-bb5c-d3e7db957b2e" /> | <img width="364" alt="image" src="https://github.com/user-attachments/assets/40a14c95-63f8-441d-b718-b5f57a506393" /> |

Android:

| Before | After |
|--------|-------|
| <img width="455" alt="image" src="https://github.com/user-attachments/assets/c71da8d0-df69-44af-b1b2-580995ce55c7" /> | <img width="449" alt="image" src="https://github.com/user-attachments/assets/7357e670-3510-4bbe-8543-68d3bd8c4bea" /> |

Reviewed By: cipolleschi

Differential Revision: D75938844

Pulled By: cortinico

fbshipit-source-id: c7d4063af561e7b0e583eddefcbb289786f3805a
This commit is contained in:
Mateo Guzmán
2025-06-04 02:30:59 -07:00
committed by Facebook GitHub Bot
parent 1a6d466f18
commit 8960d9ea2c
10 changed files with 15 additions and 71 deletions
+1 -7
View File
@@ -2,13 +2,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo
---
- launchApp
- assertVisible: "Components"
- scrollUntilVisible:
element:
id: "Button"
direction: DOWN
speed: 40
- tapOn:
id: "Button"
- openLink: "rntester://example/ButtonExample"
- tapOn:
id: "button_default_styling"
- assertVisible: "Your application has been submitted!"
+1 -7
View File
@@ -2,13 +2,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo
---
- launchApp
- assertVisible: "Components"
- scrollUntilVisible:
element:
id: "Flatlist"
direction: DOWN
speed: 40
- tapOn:
id: "Flatlist"
- openLink: "rntester://example/FlatListExample"
- tapOn:
id: "Basic"
- assertVisible:
@@ -1,5 +0,0 @@
appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp
---
- launchApp
- assertVisible: "Components"
- runFlow: ./search.yml
@@ -1,6 +0,0 @@
appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp
---
- assertVisible:
id: "explorer_search"
- tapOn:
id: "explorer_search"
+1 -7
View File
@@ -2,11 +2,5 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo
---
- launchApp
- assertVisible: "Components"
- scrollUntilVisible:
element:
id: "Image"
direction: DOWN
speed: 40
- tapOn:
id: "Image"
- openLink: "rntester://example/ImageExample"
- assertVisible: "Plain Network Image with `source` prop."
@@ -1,17 +1,8 @@
appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp
---
- launchApp
- assertVisible:
text: "APIs"
- tapOn:
id: "apis-tab"
- runFlow: ./helpers/search.yml
- inputText:
text: "Legacy Native"
- assertVisible:
id: "Legacy Native Module"
- tapOn:
id: "Legacy Native Module"
- assertVisible: "Components"
- openLink: "rntester://example/LegacyModuleExample"
- tapOn:
text: "voidFunc"
- assertVisible:
+1 -7
View File
@@ -2,13 +2,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo
---
- launchApp
- assertVisible: "Components"
- scrollUntilVisible:
element:
id: "Modal"
direction: DOWN
speed: 60
- tapOn:
id: "Modal"
- openLink: "rntester://example/ModalExample"
- assertVisible:
text: "Show Modal"
- tapOn:
@@ -1,12 +1,8 @@
appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp
---
- runFlow: ./helpers/launch-app-and-search.yml
- inputText:
text: "New Architecture"
- assertVisible:
id: "New Architecture Examples"
- tapOn:
id: "New Architecture Examples"
- launchApp
- assertVisible: "Components"
- openLink: "rntester://example/NewArchitectureExample"
- assertVisible: "HSBA: h: 0, s: 0, b: 0, a: 0"
- assertVisible: "Constants From Interop Layer: 3.14"
- tapOn: "Change Background"
+3 -7
View File
@@ -1,12 +1,8 @@
appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp
---
- runFlow: ./helpers/launch-app-and-search.yml
- inputText:
text: "Pressable"
- assertVisible:
id: "Pressable"
- tapOn:
id: "Pressable"
- launchApp
- assertVisible: "Components"
- openLink: "rntester://example/PressableExample"
- assertVisible:
text: "Change content based on Press"
- assertVisible:
+3 -7
View File
@@ -1,12 +1,8 @@
appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp
---
- runFlow: ./helpers/launch-app-and-search.yml
- inputText:
text: "Text"
- assertVisible:
id: "Text"
- tapOn:
id: "Text"
- launchApp
- assertVisible: "Components"
- openLink: "rntester://example/TextExample"
- assertVisible:
id: "example_search"
- tapOn: