-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Fix native test timeouts caused by combining fake timers and setImmediate #37715
Commits on Jan 4, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 2d3b799 - Browse repository at this point
Copy the full SHA 2d3b799View commit details -
Clean up fake timer usage after tests
This may be unnecessary, but avoid potential issues where fake timers are unexpectedly used and cause breakages in other tests.
Configuration menu - View commit details
-
Copy full SHA for f7761f7 - Browse repository at this point
Copy the full SHA f7761f7View commit details -
Enable combination of modern fake timers and waitFor
Previously, `waitFor` would timeout when `jest.useFakeTimers('modern')` was enabled. The 'modern' version is now the default in Jest 27. The Jest preset from `@testing-library/react-native` provides a workaround for a larger issue in React Native and Jest that mutates the global `Promise` object. https://git.io/JSDZI
Configuration menu - View commit details
-
Copy full SHA for 07f062d - Browse repository at this point
Copy the full SHA 07f062dView commit details -
Remove global enabling of fake timers
Enabling fake timers can have negative consequences with `waitFor`, e.g. causing unexpected timeouts. Enabling it globally is far-reaching and this should likely be enabled within individual tests as needed.
Configuration menu - View commit details
-
Copy full SHA for 7a1d441 - Browse repository at this point
Copy the full SHA 7a1d441View commit details -
Replace jest-jasmine2 with jest-circus
The latter is considered the successor to the former. We seemingly do not depend on anything explicitly provided by `jest-jasmine2` and should likely move on from it.
Configuration menu - View commit details
-
Copy full SHA for 7ec7e40 - Browse repository at this point
Copy the full SHA 7ec7e40View commit details -
Switch testing environment from jsdom to node
Improves speed of test environment setup and fixes a timeout issue when combining `waitFor` and `jest.useFakeTimers('modern')`. It is not yet exactly pinpointed as to _why_ this fixes the timeout issue. It appears to related to `setImmediate` and `setTimeout`.
Configuration menu - View commit details
-
Copy full SHA for 8254598 - Browse repository at this point
Copy the full SHA 8254598View commit details -
Remove setImmediate global for testing environment
This may be unnecessary if `testEnvironment: 'node'` is retained. However, most tests are currently broken due to missing DOM APIs.
Configuration menu - View commit details
-
Copy full SHA for e35a976 - Browse repository at this point
Copy the full SHA e35a976View commit details
Commits on Jan 5, 2022
-
Polyfill required DOM APIs for testing environment
Now that `testEnvironment: 'node'` is utilized for the testing environment, we must mirror the app runtime and polyfill the necessary DOM APIs used in the source. The Enzyme configuration removed conflicts with the switch from `testEnvironment: 'jsdom'` to `testEnvironment: 'node'`. Enzyme depends upon `react-dom`, which introduces far more dependencies upon DOM APIs. Currently, all Enzyme-related tests fail and need to be replaced with `@testing-library/react-native`.
Configuration menu - View commit details
-
Copy full SHA for 637090a - Browse repository at this point
Copy the full SHA 637090aView commit details -
Avoid import of react-dom within native file
Importing `react-dom` introduces additional dependencies upon the DOM API and is incompatible with `testEnvironment: 'node'`. The `act` utility is available from `@testing-library/react-native`.
Configuration menu - View commit details
-
Copy full SHA for 315e5cb - Browse repository at this point
Copy the full SHA 315e5cbView commit details -
Explicitly toggle fake timers in tests
This may not be necessary, but may help avoid unexpected issues from lingering fake timers, e.g. timeout errors while using `waitFor`.
Configuration menu - View commit details
-
Copy full SHA for 380476f - Browse repository at this point
Copy the full SHA 380476fView commit details -
The Jest preset from `@testing-library/react-native` that fixed support for "modern" timers by modifying the polyfilled the global `Promise` resulted in new failures from within React Native itself. Specifically, core React Native components rely upon `.done` from the `promise` package. `.done` is a non-standard method that does not exist on the global `Promise` used by `@testing-library/react-native`'s preset.
Configuration menu - View commit details
-
Copy full SHA for bba6d91 - Browse repository at this point
Copy the full SHA bba6d91View commit details
Commits on Jan 6, 2022
-
Disable erroneously failing test
This previously passing test now fails after upgrading `@testing-library/react-native` due to changes in the library. Setting `pointerEvent` to "box-none" or "none" currently erroneously prevents triggering other events unrelated to pressing on the element, e.g. `onTouch*`, `onLayout`. https://git.io/JSHZt
Configuration menu - View commit details
-
Copy full SHA for fafa79e - Browse repository at this point
Copy the full SHA fafa79eView commit details -
Reinstate jest-jasmine2 to support done callback
The Jest team create jest-circus as the predecessor for jest-jasmine2. The former does not support the `done` callback with async/await, and would appear to have no plans to do so. It would likely benefit us to refactor the one current test using `done` away from it, and embrace `jest-circus` to maintain alignment with Jest core.
Configuration menu - View commit details
-
Copy full SHA for 0b3ea9a - Browse repository at this point
Copy the full SHA 0b3ea9aView commit details -
Refactor native unit tests away from done callback
The Jest team created `jest-circus` as the predecessor for `jest-jasmine2`. The former does not support the `done` callback with async/await, and would appear to have no plans to do so. In order to embrace `jest-circus` and maintain alignment with Jest core, the one test using `done` was refactored to avoid it - https://git.io/JSHWU - https://git.io/JSHWk
Configuration menu - View commit details
-
Copy full SHA for 95df56c - Browse repository at this point
Copy the full SHA 95df56cView commit details -
Configuration menu - View commit details
-
Copy full SHA for ad43d2a - Browse repository at this point
Copy the full SHA ad43d2aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 61da998 - Browse repository at this point
Copy the full SHA 61da998View commit details -
Configuration menu - View commit details
-
Copy full SHA for 36c4d84 - Browse repository at this point
Copy the full SHA 36c4d84View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3b1acec - Browse repository at this point
Copy the full SHA 3b1acecView commit details -
Configuration menu - View commit details
-
Copy full SHA for a5025ef - Browse repository at this point
Copy the full SHA a5025efView commit details -
Configuration menu - View commit details
-
Copy full SHA for d0c6729 - Browse repository at this point
Copy the full SHA d0c6729View commit details -
Configuration menu - View commit details
-
Copy full SHA for 02c0189 - Browse repository at this point
Copy the full SHA 02c0189View commit details -
Configuration menu - View commit details
-
Copy full SHA for b8be92f - Browse repository at this point
Copy the full SHA b8be92fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1c8db5f - Browse repository at this point
Copy the full SHA 1c8db5fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 19aa31b - Browse repository at this point
Copy the full SHA 19aa31bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3e3f9a7 - Browse repository at this point
Copy the full SHA 3e3f9a7View commit details
Commits on Jan 7, 2022
-
Configuration menu - View commit details
-
Copy full SHA for f9cd64e - Browse repository at this point
Copy the full SHA f9cd64eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a6959d - Browse repository at this point
Copy the full SHA 6a6959dView commit details -
Fix ReferencEerror in Inserter test
Usage of `react-test-renderer` caused the following error. Leveraging `@testing-library/react-native` instead resolved it for an unknown reason. ``` ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From packages/block-editor/src/components/inserter/test/index.native.js. 468 | style: listStyle, 469 | safeAreaBottomInset, > 470 | scrollEnabled, | ^ 471 | automaticallyAdjustContentInsets: false, 472 | }; 473 | at Object.get PanResponder [as PanResponder] (node_modules/react-native/index.js:251:12) at BottomSheet.render (packages/components/src/mobile/bottom-sheet/index.native.js:470:39) at finishClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8459:31) at updateClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8409:24) at beginWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9990:16) ```
Configuration menu - View commit details
-
Copy full SHA for d6064e7 - Browse repository at this point
Copy the full SHA d6064e7View commit details -
Fix ReferencEerror in Verse test
Usage of `react-test-renderer` caused the following error. Leveraging `@testing-library/react-native` instead resolved it for an unknown reason. ``` ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From packages/block-editor/src/components/inserter/test/index.native.js. 468 | style: listStyle, 469 | safeAreaBottomInset, > 470 | scrollEnabled, | ^ 471 | automaticallyAdjustContentInsets: false, 472 | }; 473 | at Object.get PanResponder [as PanResponder] (node_modules/react-native/index.js:251:12) at BottomSheet.render (packages/components/src/mobile/bottom-sheet/index.native.js:470:39) at finishClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8459:31) at updateClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8409:24) at beginWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9990:16) ```
Configuration menu - View commit details
-
Copy full SHA for 2a2616a - Browse repository at this point
Copy the full SHA 2a2616aView commit details -
Fix ReferencEerror in Audio test
Usage of `react-test-renderer` caused the following error. Leveraging `@testing-library/react-native` instead resolved it for an unknown reason. ``` ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From packages/block-editor/src/components/inserter/test/index.native.js. 468 | style: listStyle, 469 | safeAreaBottomInset, > 470 | scrollEnabled, | ^ 471 | automaticallyAdjustContentInsets: false, 472 | }; 473 | at Object.get PanResponder [as PanResponder] (node_modules/react-native/index.js:251:12) at BottomSheet.render (packages/components/src/mobile/bottom-sheet/index.native.js:470:39) at finishClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8459:31) at updateClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8409:24) at beginWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9990:16) ```
Configuration menu - View commit details
-
Copy full SHA for 3690805 - Browse repository at this point
Copy the full SHA 3690805View commit details -
Fix ReferencEerror in File test
Usage of `react-test-renderer` caused the following error. Leveraging `@testing-library/react-native` instead resolved it for an unknown reason. ``` ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From packages/block-editor/src/components/inserter/test/index.native.js. 468 | style: listStyle, 469 | safeAreaBottomInset, > 470 | scrollEnabled, | ^ 471 | automaticallyAdjustContentInsets: false, 472 | }; 473 | at Object.get PanResponder [as PanResponder] (node_modules/react-native/index.js:251:12) at BottomSheet.render (packages/components/src/mobile/bottom-sheet/index.native.js:470:39) at finishClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8459:31) at updateClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8409:24) at beginWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9990:16) ```
Configuration menu - View commit details
-
Copy full SHA for f3f4c2c - Browse repository at this point
Copy the full SHA f3f4c2cView commit details -
Fix ReferencEerror in Search test
Usage of `react-test-renderer` caused the following error. Leveraging `@testing-library/react-native` instead resolved it for an unknown reason. ``` ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From packages/block-editor/src/components/inserter/test/index.native.js. 468 | style: listStyle, 469 | safeAreaBottomInset, > 470 | scrollEnabled, | ^ 471 | automaticallyAdjustContentInsets: false, 472 | }; 473 | at Object.get PanResponder [as PanResponder] (node_modules/react-native/index.js:251:12) at BottomSheet.render (packages/components/src/mobile/bottom-sheet/index.native.js:470:39) at finishClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8459:31) at updateClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8409:24) at beginWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9990:16) ```
Configuration menu - View commit details
-
Copy full SHA for ceecec8 - Browse repository at this point
Copy the full SHA ceecec8View commit details -
Fix ReferencEerror in Missing test
Usage of `react-test-renderer` caused the following error. Leveraging `@testing-library/react-native` instead resolved it for an unknown reason. ``` ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From packages/block-editor/src/components/inserter/test/index.native.js. 468 | style: listStyle, 469 | safeAreaBottomInset, > 470 | scrollEnabled, | ^ 471 | automaticallyAdjustContentInsets: false, 472 | }; 473 | at Object.get PanResponder [as PanResponder] (node_modules/react-native/index.js:251:12) at BottomSheet.render (packages/components/src/mobile/bottom-sheet/index.native.js:470:39) at finishClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8459:31) at updateClassComponent (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8409:24) at beginWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9990:16) ```
Configuration menu - View commit details
-
Copy full SHA for 61a6520 - Browse repository at this point
Copy the full SHA 61a6520View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4879647 - Browse repository at this point
Copy the full SHA 4879647View commit details
Commits on Jan 10, 2022
-
Add assertions to block type tab tests
Improve test clarity with explicit expect assertions. Co-authored-by: Carlos Garcia <fluiddot@gmail.com>
Configuration menu - View commit details
-
Copy full SHA for e065921 - Browse repository at this point
Copy the full SHA e065921View commit details
Commits on Jan 11, 2022
-
Remove unnecessary abstraction
The switch away from Enzyme reduced this abstraction to a single line, so it provides less value now.
Configuration menu - View commit details
-
Copy full SHA for ddaac71 - Browse repository at this point
Copy the full SHA ddaac71View commit details -
Consistently assert media block update progress spinner removal
This increases consistency amongst the tests, as most already include this assertion.
Configuration menu - View commit details
-
Copy full SHA for 6e17911 - Browse repository at this point
Copy the full SHA 6e17911View commit details -
Update MediaUpload test to select 'Choose from device' option
This selection better aligns with the test description.
Configuration menu - View commit details
-
Copy full SHA for 3d817f4 - Browse repository at this point
Copy the full SHA 3d817f4View commit details -
Remove duplicative matchMedia global definition
The test environment now imports the globals setup file used by the app runtime. That file includes a `matchMedia` global definition as well.
Configuration menu - View commit details
-
Copy full SHA for bbe9288 - Browse repository at this point
Copy the full SHA bbe9288View commit details -
Add assertions to LinkSettings tests
Improve test clarity with explicit expect assertions.
Configuration menu - View commit details
-
Copy full SHA for e703034 - Browse repository at this point
Copy the full SHA e703034View commit details -
Removed shallow renderer usage in tests
Shallow rendering components is generally considered a non-optimal approach to testing React components by the React community. This replaces `shallow` with `render` to further test integration of the subject components.
Configuration menu - View commit details
-
Copy full SHA for a0cb863 - Browse repository at this point
Copy the full SHA a0cb863View commit details -
The `React` import was utilized by the now removed `shallow` render implementation.
Configuration menu - View commit details
-
Copy full SHA for 0abecf0 - Browse repository at this point
Copy the full SHA 0abecf0View commit details -
Remove unnecessary top-level beforeAll usage
Jest runs each test file independently, so top-level code will not impact other test files. Since the `(before|after)All` usage in code changed is all top-level, and not within a `describe`, it is superfluous.
Configuration menu - View commit details
-
Copy full SHA for 1d325ef - Browse repository at this point
Copy the full SHA 1d325efView commit details