Skip to content
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
19 changes: 9 additions & 10 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ version: 2.1
executors:
node:
docker: &docker
- image: cimg/node:26.11
- image: cimg/node:26.12
environment:
# the whole CI is reset each time anyway, so only track local cache
YARN_ENABLE_GLOBAL_CACHE: false
Expand Down Expand Up @@ -286,14 +286,6 @@ jobs:
npm pkg delete resolutions.react resolutions.react-dom resolutions.react-test-renderer
yarn up react@<< parameters.react-version >> react-dom@<< parameters.react-version >> react-test-renderer@<< parameters.react-version >>
yarn workspace @data-client/test add --dev @testing-library/react-hooks
elif [ "<< parameters.react-version >>" == "native" ]; then
# React Native 0.87 bundles the React 19.2.3 renderer (React 19.3 pairs with RN 0.88).
# This job also covers the previous React minor for the ReactDOM suites below.
V=19.2.3
npm pkg delete resolutions.react resolutions.react-dom resolutions.react-test-renderer
# test-renderer's minor tracks React's (1.2 pairs with React 19.2)
yarn up react@$V react-dom@$V react-test-renderer@$V test-renderer@~1.2.0
V=$V node -e "for (const p of ['react','react-dom','react-test-renderer']) { const v=require(p+'/package.json').version; if (v !== process.env.V) throw new Error(p+' resolved to '+v) }"
fi
- run:
name: Running Jest
Expand All @@ -306,8 +298,15 @@ jobs:
# No --maxWorkers here: the ReactNative suites are dominated by
# fake-timer waits, and capping workers makes the heavy hook
# suites contend enough to flake 5s test timeouts.
# React Native 0.88 bundles the React 19.3 renderer, so run on the installed React
yarn test:ci --selectProjects ReactNative
# Previous React minor: these suites assert per-minor React behavior
# Previous React minor (19.2): these suites assert per-minor React behavior,
# and none of them load react-native, whose 0.88 peer is react ^19.3
V=19.2.3
npm pkg delete resolutions.react resolutions.react-dom resolutions.react-test-renderer
# test-renderer's minor tracks React's (1.2 pairs with React 19.2)
yarn up react@$V react-dom@$V react-test-renderer@$V test-renderer@~1.2.0
V=$V node -e "for (const p of ['react','react-dom','react-test-renderer']) { const v=require(p+'/package.json').version; if (v !== process.env.V) throw new Error(p+' resolved to '+v) }"
yarn test:ci --maxWorkers=4 --selectProjects ReactDOM --testPathPatterns 'packages/react/src/__tests__/concurrent-.*\.web\.tsx' 'packages/react/src/hooks/__tests__/useCacheState.web.tsx'
elif [ "<< parameters.react-version >>" == "latest" ]; then
# Coverage floors and projects live in the test:coverage script
Expand Down
80 changes: 40 additions & 40 deletions examples/nextjs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 9 additions & 18 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ process.env.ANANSI_JEST_TSCONFIG = 'tsconfig.test.json';
const fs = require('fs');
const path = require('path');

const rnPreset = require('@react-native/jest-preset');

// ESM-only dependencies tests import; Jest must compile them to CommonJS
const esmModules = 'temporal-polyfill|temporal-utils';

Expand Down Expand Up @@ -129,45 +131,34 @@ const projects = [
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.node\\.(j|t)sx?$',
},
{
// Mirrors @react-native/jest-preset (not used as preset: we layer on @anansi/jest-preset).
// https://github.com/facebook/react-native/blob/main/packages/jest-preset/jest-preset.js
// Layers @react-native/jest-preset on @anansi/jest-preset (jest takes one preset)
...baseConfig,
rootDir: __dirname,
roots: packages.map(pkgName => `<rootDir>/packages/${pkgName}/src`),
displayName: 'ReactNative',
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.native\\.(j|t)sx?$',
resolver: require.resolve('@react-native/jest-preset/jest/resolver.js'),
resolver: rnPreset.resolver,
moduleNameMapper: {
...baseConfig.moduleNameMapper,
// exposed only through package `exports`, which the resolver strips
'^react-native/setup-env$': `${path.dirname(
require.resolve('react-native/package.json'),
)}/src/setup-env.js`,
'^react-native($|/.*)': `${path.dirname(
require.resolve('react-native/package.json'),
)}$1`,
// aliases react-native's `exports`-only entry points, which its resolver strips
...rnPreset.moduleNameMapper,
},
testEnvironment:
require.resolve('@react-native/jest-preset/jest/react-native-env.js'),
testEnvironment: rnPreset.testEnvironment,
transformIgnorePatterns: [
`node_modules\\/(?!(((jest-)?react-native)|@react-native(-community)?|@react-navigation|${esmModules}))`,
'<rootDir>/.*__tests__/[^/]+\\.(web|node)\\.(j|t)sx?$',
'<rootDir>/scripts',
],
setupFiles: [
require.resolve('@react-native/jest-preset/jest/setup.js'),
...rnPreset.setupFiles,
'<rootDir>/scripts/testSetupNative.js',
],
transform: {
//'^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js', //setup.js needs to be transformed, but preprocessor screws everything else up
...baseConfig.transform,
'^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$':
require.resolve('@react-native/jest-preset/jest/assetFileTransformer.js'),
},
haste: {
defaultPlatform: 'ios',
platforms: ['android', 'ios', 'native'],
},
haste: rnPreset.haste,
},
];

Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"@data-client/rest": "workspace:*",
"@data-client/test": "workspace:*",
"@docusaurus/eslint-plugin": "3.10.2",
"@react-native/jest-preset": "0.87.1",
"@react-native/jest-preset": "0.88.0",
"@react-navigation/native": "^7.0.0",
"@react-navigation/native-stack": "^7.0.0",
"@testing-library/dom": "^10.4.0",
Expand Down Expand Up @@ -112,7 +112,7 @@
"react": "19.3.1",
"react-dom": "19.3.1",
"react-live": "^5.0.0",
"react-native": "0.87.1",
"react-native": "0.88.0",
"react-native-safe-area-context": "^5.0.0",
"react-native-screens": "^4.1.0",
"react-test-renderer": "19.3.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@
"qs": "^6.14.2",
"react": "19.3.1",
"react-dom": "^19.0.0",
"react-native": "0.87.1",
"react-native": "0.88.0",
"react-native-safe-area-context": "^5.0.0",
"react-native-screens": "^4.1.0",
"react-redux": "^9.2.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
"jest": "^30.0.0",
"react": "19.3.1",
"react-dom": "19.3.1",
"react-native": "0.87.1",
"react-native": "0.88.0",
"react-test-renderer": "*",
"rollup-plugins": "workspace:*",
"test-renderer": "^1.3.0"
Expand Down
Loading
Loading