Make JS and TS tests independent of react-native package name#41705
Make JS and TS tests independent of react-native package name#41705thymikee wants to merge 1 commit intofacebook:mainfrom
Conversation
Base commit: dc95568 |
| // These mappers allow out-of-tree platforms tests to seamlessly resolve RN imports | ||
| '^react-native/(.*)': '<rootDir>/packages/react-native/$1', | ||
| '^react-native$': '<rootDir>/packages/react-native/index.js', |
There was a problem hiding this comment.
Oh hey I remember hitting this back in the day for RN Windows.
Something else you will run into is resolving files correctly based on platform extension, if you end up adding visionos there (even in internals of the fork).
@tido64 you ended up building a custom resolver or config for this right? Maybe we should upstream the solution we had.
There was a problem hiding this comment.
We just upstreamed one bugfix (custom resolvers were not overridable when OOT was defined) and create a custom resolver here: callstack#32
We chose not to change the Platform and instead do something custom, because there's so much overlap between visionOS and iOS and we want to leverage 3rd party libs that rely on ios platform
There was a problem hiding this comment.
A nuance is that Jest uses a different resolver from Metro, but IIRC had some declarative fields to customize resolution. I looked it up, and here is the MSFT one I think: https://github.com/microsoft/rnx-kit/blob/main/packages/jest-preset/src/index.js
There was a problem hiding this comment.
As @NickGerleman pointed out, it's built into our Jest preset. react-native-windows uses it extensively: https://github.com/search?q=repo%3Amicrosoft%2Freact-native-windows%20%40rnx-kit%2Fjest-preset&type=code
It should work for react-native-visionos as well. If it doesn't, let me know.
There was a problem hiding this comment.
This change is 3 lines that we need vs the whole package imported. But we'll definitely consider relying on rnx-kit infra as it's already prepared for OOT platforms out there 👍🏼
|
This diff seems harmless, but if this config is specific to the use case of maintaining an out-of-tree platform, I'd recommend keeping it separate from the |
|
This PR is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
|
This PR was closed because it has been stalled for 7 days with no activity. |
Summary:
When working with OOT platforms we need to change the
react-nativepackage name to something else, which breaks JS and TS tests. This change makes sure thatreact-nativeimports map to thepackages/react-native, allowing us to reduce the scope of the fork. It should be transparent to the core platforms.Changelog:
[INTERNAL] [FIXED] - Make JS and TS tests independent of react-native package name
Test Plan:
CI green