Skip to content
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

[v13] chore: remove react 16 & 17 code #1602

Merged
merged 2 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
"clean": "del build",
"test": "jest",
"test:ci": "jest --maxWorkers=2 --collectCoverage=true --coverage-provider=v8",
"test:react-17": "scripts/test_react_17",
"typecheck": "tsc",
"flow": "flow",
"copy-flowtypes": "cp typings/index.flow.js build",
Expand Down Expand Up @@ -59,9 +58,9 @@
},
"peerDependencies": {
"jest": ">=28.0.0",
"react": ">=16.8.0",
"react-native": ">=0.59",
"react-test-renderer": ">=16.8.0"
"react": ">=18.2.0",
"react-native": ">=0.73",
"react-test-renderer": ">=18.2.0"
},
"peerDependenciesMeta": {
"jest": {
Expand All @@ -80,7 +79,7 @@
"@release-it/conventional-changelog": "^8.0.1",
"@relmify/jest-serializer-strip-ansi": "^1.0.2",
"@types/jest": "^29.5.12",
"@types/react": "^18.2.65",
"@types/react": "^18.3.1",
"@types/react-test-renderer": "^18.0.7",
"babel-jest": "^29.7.0",
"del-cli": "^5.1.0",
Expand All @@ -90,9 +89,9 @@
"flow-bin": "~0.170.0",
"jest": "^29.7.0",
"prettier": "^2.8.8",
"react": "18.2.0",
"react": "18.3.1",
"react-native": "0.74.1",
"react-test-renderer": "18.2.0",
"react-test-renderer": "18.3.1",
"release-it": "^17.2.1",
"strip-ansi": "^6.0.1",
"typescript": "^5.4.5"
Expand Down
12 changes: 0 additions & 12 deletions scripts/test_react_17

This file was deleted.

5 changes: 1 addition & 4 deletions src/act.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// This file and the act() implementation is sourced from react-testing-library
// https://github.com/testing-library/react-testing-library/blob/c80809a956b0b9f3289c4a6fa8b5e8cc72d6ef6d/src/act-compat.js
import { act as reactTestRendererAct } from 'react-test-renderer';
import { checkReactVersionAtLeast } from './react-versions';

type ReactAct = typeof reactTestRendererAct;

Expand Down Expand Up @@ -72,9 +71,7 @@ function withGlobalActEnvironment(actImplementation: ReactAct) {
};
}

const act: ReactAct = checkReactVersionAtLeast(18, 0)
? (withGlobalActEnvironment(reactTestRendererAct) as ReactAct)
: reactTestRendererAct;
const act = withGlobalActEnvironment(reactTestRendererAct) as ReactAct;

export default act;
export { setIsReactActEnvironment as setReactActEnvironment, getIsReactActEnvironment };
36 changes: 10 additions & 26 deletions src/helpers/wrap-async.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
/* istanbul ignore file */

import act, { getIsReactActEnvironment, setReactActEnvironment } from '../act';
import { getIsReactActEnvironment, setReactActEnvironment } from '../act';
import { flushMicroTasks } from '../flush-micro-tasks';
import { checkReactVersionAtLeast } from '../react-versions';

/**
* Run given async callback with temporarily disabled `act` environment and flushes microtasks queue.
Expand All @@ -11,30 +10,15 @@ import { checkReactVersionAtLeast } from '../react-versions';
* @returns Result of the callback
*/
export async function wrapAsync<Result>(callback: () => Promise<Result>): Promise<Result> {
if (checkReactVersionAtLeast(18, 0)) {
const previousActEnvironment = getIsReactActEnvironment();
setReactActEnvironment(false);
const previousActEnvironment = getIsReactActEnvironment();
setReactActEnvironment(false);

try {
const result = await callback();
// Flush the microtask queue before restoring the `act` environment
await flushMicroTasks();
return result;
} finally {
setReactActEnvironment(previousActEnvironment);
}
try {
const result = await callback();
// Flush the microtask queue before restoring the `act` environment
await flushMicroTasks();
return result;
} finally {
setReactActEnvironment(previousActEnvironment);
}

if (!checkReactVersionAtLeast(16, 9)) {
return callback();
}

// Wrapping with act for react version 16.9 to 17.x
let result: Result;
await act(async () => {
result = await callback();
});

// Either we have result or `callback` threw error
return result!;
}
6 changes: 6 additions & 0 deletions website/docs/MigrationV13.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ Migration to React Native Testing Library version 13 from version 12.x.

# Breaking changes

## Supported React and React Native versions

This version supports only React 19 and corresponding React Native versions. If you use React 18 or 19, please use latest of v12 versions.

[Note: at the moment there is no React Native for React 19, and React 19 is still in beta, so we use React 18.3 for the time being].

## Removed deprecated \*ByAccessibilityState queries

This deprecated query has been removed as is typically too general to give meaningful results. Use one of the following options:
Expand Down
4 changes: 0 additions & 4 deletions website/docs/OtherAPIs.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,6 @@ await waitFor(() => {
}, 10000);
```

:::info
In order to properly use `waitFor` you need at least React >=16.9.0 (featuring async `act`) or React Native >=0.61 (which comes with React >=16.9.0).
:::

:::note
If you receive warnings related to `act()` function consult our [Undestanding Act](./UnderstandingAct.md) function document.
:::
Expand Down
60 changes: 33 additions & 27 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3585,7 +3585,7 @@ __metadata:
"@release-it/conventional-changelog": "npm:^8.0.1"
"@relmify/jest-serializer-strip-ansi": "npm:^1.0.2"
"@types/jest": "npm:^29.5.12"
"@types/react": "npm:^18.2.65"
"@types/react": "npm:^18.3.1"
"@types/react-test-renderer": "npm:^18.0.7"
babel-jest: "npm:^29.7.0"
del-cli: "npm:^5.1.0"
Expand All @@ -3597,18 +3597,18 @@ __metadata:
jest-matcher-utils: "npm:^29.7.0"
prettier: "npm:^2.8.8"
pretty-format: "npm:^29.7.0"
react: "npm:18.2.0"
react: "npm:18.3.1"
react-native: "npm:0.74.1"
react-test-renderer: "npm:18.2.0"
react-test-renderer: "npm:18.3.1"
redent: "npm:^3.0.0"
release-it: "npm:^17.2.1"
strip-ansi: "npm:^6.0.1"
typescript: "npm:^5.4.5"
peerDependencies:
jest: ">=28.0.0"
react: ">=16.8.0"
react-native: ">=0.59"
react-test-renderer: ">=16.8.0"
react: ">=18.2.0"
react-native: ">=0.73"
react-test-renderer: ">=18.2.0"
peerDependenciesMeta:
jest:
optional: true
Expand Down Expand Up @@ -3796,14 +3796,13 @@ __metadata:
languageName: node
linkType: hard

"@types/react@npm:^18.2.65":
version: 18.2.65
resolution: "@types/react@npm:18.2.65"
"@types/react@npm:^18.3.1":
version: 18.3.1
resolution: "@types/react@npm:18.3.1"
dependencies:
"@types/prop-types": "npm:*"
"@types/scheduler": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10c0/91158b5a9e90489a5984bb610c3692001ecdf1d286c78384252698bcb306ef88e9434e75f01bf7739017e949e7690b7d6f1b7ef9d7097f86f3f649482a33604b
checksum: 10c0/18d856c12a4ec93f3cda2d58ef3d77a9480818afd3af895f812896fb82cfca1f35a692ab1add4ce826a4eb58a071624c7d1c8c6c4ccfb81c100d2916dc607614
languageName: node
linkType: hard

Expand Down Expand Up @@ -11004,7 +11003,7 @@ __metadata:
languageName: node
linkType: hard

"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0":
"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0":
version: 18.2.0
resolution: "react-is@npm:18.2.0"
checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0
Expand All @@ -11025,6 +11024,13 @@ __metadata:
languageName: node
linkType: hard

"react-is@npm:^18.3.1":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072
languageName: node
linkType: hard

"react-native@npm:0.74.1":
version: 0.74.1
resolution: "react-native@npm:0.74.1"
Expand Down Expand Up @@ -11097,25 +11103,25 @@ __metadata:
languageName: node
linkType: hard

"react-test-renderer@npm:18.2.0":
version: 18.2.0
resolution: "react-test-renderer@npm:18.2.0"
"react-test-renderer@npm:18.3.1":
version: 18.3.1
resolution: "react-test-renderer@npm:18.3.1"
dependencies:
react-is: "npm:^18.2.0"
react-is: "npm:^18.3.1"
react-shallow-renderer: "npm:^16.15.0"
scheduler: "npm:^0.23.0"
scheduler: "npm:^0.23.2"
peerDependencies:
react: ^18.2.0
checksum: 10c0/53dfada1da1e8dd0498a5601e9eea3dc6ca23c6c2694d1cab9712faea869c11e4ce1c9a618d674cb668a668b41fb6bcf9a7b0a078cd853b1922f002fa22f42c8
react: ^18.3.1
checksum: 10c0/c633558ef9af33bc68f0c4dbb5163a004c4fb9eade7bd0a7cfc0355fb367f36bd9d96533c90b7e85a146be6c525113a15f58683d269e0177ad77e2b04d4fe51c
languageName: node
linkType: hard

"react@npm:18.2.0":
version: 18.2.0
resolution: "react@npm:18.2.0"
"react@npm:18.3.1":
version: 18.3.1
resolution: "react@npm:18.3.1"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8
checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3
languageName: node
linkType: hard

Expand Down Expand Up @@ -11668,12 +11674,12 @@ __metadata:
languageName: node
linkType: hard

"scheduler@npm:^0.23.0":
version: 0.23.0
resolution: "scheduler@npm:0.23.0"
"scheduler@npm:^0.23.2":
version: 0.23.2
resolution: "scheduler@npm:0.23.2"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd
checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78
languageName: node
linkType: hard

Expand Down
Loading