-
Notifications
You must be signed in to change notification settings - Fork 25k
Make JS and TS tests independent of react-native package name #41705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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