-
Notifications
You must be signed in to change notification settings - Fork 24.4k
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
Jest transpiling from "jest/preprocessor.js" broken #22175
Jest transpiling from "jest/preprocessor.js" broken #22175
Comments
I've just added another example to the repo that I came across, by adding an empty constructor arrow functions transpile correctly on class methods https://github.com/lewnelson/react-native-jest-example/blob/master/src/working/containers/Something.js. I'm not sure if the issue lies within the jest preprocessor or within the babel plugins themselves. Possibly the ordering of the plugins in the preprocessor? |
We have also ran into this issue on This is as far as I got. To get around the issue for now we are binding the methods in the constructor. |
@letsgojuno Oh wow, removing I've been keeping a running list of issues/fixes when upgrading from RN 0.54 to 0.57. Added this one to the list https://github.com/tylergaw/RNUpgradePath#issue-4 @lewnelson I tried the empty constructor approach first, but didn't have any luck with it. Got the same |
This has worked for me too @tylergaw @letsgojuno. Thanks |
Everyone having this issue - go check out the link to find the solution. I didn't go and was not able to resolve it right away. Thanks! |
@kelset This is an issue in the latest 0.58.3 release as well. Steps to reproduce:
Would you be happy to accept a fix that changes the |
Yeah I feel that by having a PR we can have a conversation with the FB team about it - because I think that the preprocessor is used around the internal codebase (but not sure atm). |
+1 here, we're seeing this in some object-spread syntax which we refactored outside of a reducer. Disabling
RN jest and babel-jest |
Quoting @cpojer's answer in @karanjthakkar's PR because it's important:
One thing that I have noticed is that for Components, adding
solved the issue (found here). Not sure if we should keep this open since the proposed workaround above (disabling the inline) is not the right solution, and I feel that probably it's about code outside the main repo. |
@kelset, having your state defined in a constructor is not a workaround, it is just not using the static class properties feature of ES7. Since using this feature is ok in react-native, one would like jest tests to embrace it. And this is what this bug is about. Current workaround that we have employed is to use patch-package and just fix it inlineRequires, so that the tests work. But I don't think it qualifies as a proper solution to the issue... |
@lewnelson I create a demo repo to reproduce bag https://github.com/retyui/rn-22175 @kelset How to break tests: |
In our upgrade from React Native 0.58.6 → 0.59.0 – a narrow set of changes based on https://github.com/react-native-community/rn-diff-purge – this has become an issue. Example test failure:
The constructor hack recommended in #22175 (comment) works. |
I'm happy to fix this if somebody could make a minimal repo of a Jest+RN setup and share it here. |
This comment has been minimized.
This comment has been minimized.
Good news guys, I have tried to create a simple example as @cpojer asked, but it works in 0.59. Moreover I have tested and it worked in 0.58. It failed in 0.57.8 though and probably earlier, so it was actually an issue. (edit: At least it is the case with default RN jest setup, i.e. without adding a custom transfrom.) |
Yeah seems like this is only happening for configs that have this setting. It shouldn't be needed when the |
So is it possible to make it work for 0.58.X? What changes should we make in the config? I'm afraid I didn't understand the fix. |
@danielmartinprieto try the following: in your package.json find the It might be needed for some specific babel setup/presets though... so might need some more investigation. |
Thanks, @olegongit. We'll try that! |
Just confirming that for 0.58.x, removing the transform doesn’t work. |
|
I can confirm, when upgrading to RN 0.59+ must remove the transform property from jest config file in order to avoid the error |
@Fausto95 thanks for the comment and for the reference to the PR where you did the upgrade! We couldn't make it work until I saw your changes, and I realised something: we were using since the beginning From https://babeljs.io/docs/en/configuration:
Have a nice weekend, y'all! |
Great finding this thread, I just want to recap the solutions I've read so far. I encountered this issue while trying to add a Jest test that uses The first solution is adding a simple constructor to the above class, the error goes away. Alternatively, to "solve" the issue I can remove the above constructor, but modify The third option is to go to my |
@pro-nasa your solution is working for me, even though I did not fully understand what's going on over there. Are we waiting for a permanent solution from some specific 3rd party, or react-native itself? Thank you! |
…sting with latest jest, as per facebook/react-native#22175
I have a web project. After jest updating I has the same issue. I tried to find any |
@a-x- inline requires should be in: node_modules/react-native/jest/preprocessor.js I juste do a ugly |
I had the same error and none of the fixes worked for me:
It turned out I had a circular dependency in my components: |
Attempt to fix jest test issue while keeping react native working by installing c7b02730c762ab8bebe45fd57cd8ea69290e99ec rn commit see issues: facebook/react-native#22437 facebook/react-native#22175
Attempt to fix jest test issue while keeping react native working by installing c7b02730c762ab8bebe45fd57cd8ea69290e99ec rn commit see issues: facebook/react-native#22437 facebook/react-native#22175 @warning - jest integration tests have not been tested and might be broken due to jest haste config removal (unlikely though). - react-native app as not been tested (only tests) and might be broken as well (at launch time). - incompatibility issues may have appeared du to deprecation and breaking changes (unlikely).
Attempt to fix jest test issue while keeping react native working by installing c7b02730c762ab8bebe45fd57cd8ea69290e99ec rn commit The attempt didn't work out as r-n refused the commit due to the following comment: facebook/react-native#23326 (comment) See my comment here for correct fix patching react-native-vector-icons: GeekyAnts/NativeBase#2657 (comment) Original issues letting me to ugrade react-native: facebook/react-native#22437 facebook/react-native#22175 @warning - jest integration tests have not been tested and might be broken due to jest haste config removal (unlikely though). - react-native app as not been tested (only tests) and might be broken as well (at launch time). - incompatibility issues may have appeared du to deprecation and breaking changes (unlikely).
Attempt to fix jest test issue while keeping react native working by installing c7b02730c762ab8bebe45fd57cd8ea69290e99ec rn commit The attempt didn't work out as r-n refused the commit due to the following comment: facebook/react-native#23326 (comment) See my comment here for correct fix patching react-native-vector-icons: GeekyAnts/NativeBase#2657 (comment) Original issues letting me to ugrade react-native: facebook/react-native#22437 facebook/react-native#22175 @warning - jest integration tests have not been tested and might be broken due to jest haste config removal (unlikely though). - react-native app as not been tested (only tests) and might be broken as well (at launch time). - incompatibility issues may have appeared du to deprecation and breaking changes (unlikely).
Environment
Run
react-native info
in your terminal and paste its contents here.Description
We have recently upgraded from v0.55.4 to v0.57.4 using react-native-git-upgrade. As part of this upgrade the majority of our jest tests have broken due to transpiling errors.
Full jest config
Jest setup file
Some of the errors we are seeing are related to imports/exports and class arrow methods. e.g.
Fails with the error
TypeError: Cannot read property 'default' of undefined
. Once changed toIt is fine.
Reproducible Demo
Let us know how to reproduce the issue. Include a code sample, share a project, or share an app that reproduces the issue using https://snack.expo.io/. Please follow the guidelines for providing a MCVE: https://stackoverflow.com/help/mcve
I've setup a public repo which contains some example broken tests and how those tests can be fixed temporarily. However the underlying issue is the transpiling. https://github.com/lewnelson/react-native-jest-example
The text was updated successfully, but these errors were encountered: