12 Commits
Author SHA1 Message Date
Nicola Corti 25ebffd1f7 Run Android E2E with ARM64 APKs (#58092)
Summary:
Build only the `arm64-v8a` Android ABI for dry-run CI artifacts and run the ARM64 RNTester and template-app APKs on an API 35 `google_apis` x86_64 emulator using the system images built-in NDK translation support.

This also makes the Maestro emulator API level and target configurable, logs the device ABI/native-bridge configuration, and updates local RNTester artifact selection to use the ARM64 split.

Release and nightly publication builds continue to build all supported Android ABIs.

## Changelog:

[INTERNAL] [CHANGED] - Run Android E2E tests with ARM64 APKs through NDK translation.

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

Test Plan:
- `node --check .github/workflow-scripts/maestro-android.js` — passed.
- `node --check scripts/release-testing/test-release-local.js` — passed.
- Parsed all modified YAML files with the `yaml` Node package — passed.
- `./node_modules/.bin/prettier --check <modified files>` — passed.
- `git diff --check HEAD~3..HEAD` — passed.
- `actionlint` reported only existing repository metadata warnings for the custom `4-core-ubuntu` label and the missing description in the local `yarn-install` action.
- `yarn test .github/workflow-scripts/__tests__/maestro-android-test.js --runInBand` could not start because the local dependency tree is missing `flow-parser`; restoring dependencies was blocked by HTTP 503 responses from the npm registry.
- The draft CI run should validate ARM64 APK installation, Hermes startup, and the complete Maestro suites through `libndk_translation.so`.

Reviewed By: Abbondanzo

Differential Revision: D117195078

Pulled By: cortinico

fbshipit-source-id: a78f2127f04e80c3b5ca4c95d2024dffb92ff122
2026-08-24 07:46:44 -07:00
Alex Hunt 89300acb9c Migrate Node.js builtin imports to node: scheme (#57611)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57611

Directly follows D112733139 (Metro).

**Motivation**

- New Node builtins are *only* available under the prefix (e.g. `node:sqlite`), as this allows Node to introduce them without ecosystem-breaking changes, so this is the direction of travel and the only choice that'll allow consistency.
- Encouraging them and grouping them separately makes it easier to reason about a module's 3rd party dependencies.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D112803684

fbshipit-source-id: 40668d746a7151b3aa4800ff8af997902a18d198
2026-07-21 09:01:41 -07:00
Hur Ali 40c90ada39 fix: allow escape interpretation for shells (#57114)
Summary:
This makes the shell to use escape interpretation by setting `echo -e "..."`. For zsh shell, this often works out of the box. For other shells like bash, we may need to set it explicitly.

## Changelog:

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[INTERNAL] [FIXED] - allow escape interpretation for shells

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

Test Plan:
- CI Passes
- Verified Locally on template app

https://github.com/user-attachments/assets/4c8c6bf7-1cf2-4bd8-b094-651c44578ae0

Reviewed By: cipolleschi

Differential Revision: D107904889

Pulled By: cortinico

fbshipit-source-id: 2222f589ecc149a82d5067e0a2198b9c1a17ffcb
2026-06-09 02:50:30 -07:00
Hur Ali b392035b10 fix: add line break to gradle.properties for template testing (#57107)
Summary:
This fixes the failing CI jobs on main for `template` testing. The job fails as they echo `react.internal.mavenLocalRepo=...` to the `gradle.properties` of template test project. As a result of which the `gradle.properties` look like below:

```properties
android.builtInKotlin=false
android.newDsl=falsereact.internal.mavenLocalRepo=...
```

To fix it we add a line break in the `echo` command.

## Changelog:

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[INTERNAL] [FIXED] - add line break to gradle.properties for template testing

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

Test Plan:
- CI Passing
- Verified Locally

Reviewed By: cortinico

Differential Revision: D107880136

Pulled By: cipolleschi

fbshipit-source-id: 81cf2fe53c1c2285f79db538aa5aa3cb745f796d
2026-06-08 07:05:56 -07:00
Fabrizio Cucci 4c69379224 Boot latest available iOS simulator instead of hardcoded iPhone 16 Pro (#55932)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55932

Changelog: [Internal]

When no simulator is already booted, dynamically discover the latest
available iOS runtime and boot the first iPhone device under it, instead
of hardcoding "iPhone 16 Pro". This uses `xcrun simctl list devices
iPhone available -j` to query available devices and picks the last iOS
runtime alphabetically (i.e. the newest).

Also moved the `bootSimulatorIfNeeded` call before the `xcodebuild`
invocation on the local build path, since `xcodebuild -destination
"generic/platform=iOS Simulator"` can itself trigger a new simulator
boot.

Reviewed By: cipolleschi

Differential Revision: D95371266

fbshipit-source-id: 0f4e2a476c971e774b6461edbecba4623f6befa6
2026-03-05 06:38:08 -08:00
Fabrizio Cucci 977ad71cab Avoid spawning a new iOS simulator if one is already booted (#55931)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/55931

Changelog: [Internal]

Previously, `testRNTesterIOS` would either unconditionally boot a new
simulator (local build path) or check only for an exact "iPhone 16 Pro"
match (CI artifacts path). This caused a new iOS simulator to always
spawn even when one was already open.

Extracted a `bootSimulatorIfNeeded` helper that checks for any booted
simulator via `xcrun simctl list devices booted` before attempting to
boot a new one.

Reviewed By: cipolleschi

Differential Revision: D95368633

fbshipit-source-id: 858bd235486597b5c9dbb0b904fcd95707b92b13
2026-03-05 06:38:08 -08:00
Jakub Piasecki 30370f6aef Update test-release-local script (#54385)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54385

Changelog: [Internal]

`test-release-local` shouldn't be changing the hermes version stored in `version.properties` as this script should be called on a cut branch with hermes already bumped.

Reviewed By: cipolleschi

Differential Revision: D86105703

fbshipit-source-id: 5a1edd9f7a6cd756521749c2b0023ea683dadf82
2025-11-04 00:33:24 -08:00
Jakub Piasecki 5fcbd64986 Clean up hermes-utils (#54208)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54208

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D85047132

fbshipit-source-id: 859ca41e5513e914a708b43c0cd795cb665a5ea4
2025-10-22 09:48:13 -07:00
Sam Zhou af1bcb6d44 Mass replace $FlowIgnore with $FlowFixMe in react-native (#53076)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53076

Changelog: [Internal]

Reviewed By: marcoww6

Differential Revision: D79672242

fbshipit-source-id: 560f057d8658ed602cf7241e584bade70d8f3a99
2025-08-05 15:44:41 -07:00
Riccardo Cipolleschi 6b550a279e Fix E2E test script when the ci flag is not specified (#52617)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52617

The `test-release-local` script was failing to execute the npx rreact-native run-ios command for some issues with cocoapods.
That command tries to reinstall the pods so there might be some issues when testing.

As an alternative, we can avoid duplicated work by dropping the npx react-native command and, instead, build the app with xcodebuild and install it in the simulator with xcrun.

This is a backport of [this PR](https://github.com/facebook/react-native/pull/52609)

## Changelog:
[Internal] -

Reviewed By: vzaidman

Differential Revision: D78344397

fbshipit-source-id: cf2d9c032966a9be05670259e9532789829349f2
2025-07-15 12:04:20 -07:00
Riccardo Cipolleschi 339dc4979c Update atrifact names to the new ones (#52618)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52618

In 0.81 we dropped the JSC configuration in CI. That means that the artifacts we generate in CI have a slightly different name. The current e2e script failed to run with the ci flag because it was still using the old artifacts name and it was not finding them.

This change adress the problem by:

- using the right artifact names
- removing the --hermes parameter which controlled the Hermes vs JSC scenario.

It is also a port to main of [this PR](https://github.com/facebook/react-native/pull/52606)

## Changelog:
[Internal] -

Reviewed By: cortinico, vzaidman

Differential Revision: D78344244

fbshipit-source-id: a658ba161b867bbad773fe093df9679ea92579b3
2025-07-15 12:04:20 -07:00
Vitali Zaidman 84a2765c2a renamed release testing scripts (#52541)
Summary:
Use a more suitable name for the [scripts used in the release process](https://github.com/reactwg/react-native-releases/blob/main/docs/guide-release-testing.md) to generate a testing project to test a new React Native release against.
```diff
- test-e2e-local
+ test-release-local
```
## Changelog:
[INTERNAL]

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

Test Plan:
`yarn test-release-local-clean` works the same way:
<img width="1177" height="161" alt="Screenshot 2025-07-10 at 17 54 50" src="https://github.com/user-attachments/assets/5efe30c6-a738-476e-a670-696959e9a0fc" />

`yarn test-release-local` works the same way:
<img width="1077" height="395" alt="Screenshot 2025-07-10 at 17 59 29" src="https://github.com/user-attachments/assets/fe6c6443-9316-4ed0-b6dc-51de5ffb109c" />

Reviewed By: cipolleschi

Differential Revision: D78150648

Pulled By: vzaidman

fbshipit-source-id: 471715da271d03bc2a35afbda02074bf71f62734
2025-07-11 01:57:14 -07:00