Skip to content

Commit

Permalink
Use jest projects instead of custom jest wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
kassens committed Apr 2, 2024
1 parent 5fcaa0a commit 4886c29
Show file tree
Hide file tree
Showing 19 changed files with 324 additions and 854 deletions.
27 changes: 1 addition & 26 deletions .circleci/config.yml
Expand Up @@ -387,13 +387,10 @@ jobs:
docker: *docker
environment: *environment
parallelism: *TEST_PARALLELISM
parameters:
args:
type: string
steps:
- checkout
- setup_node_modules
- run: yarn test <<parameters.args>> --ci
- run: yarn jest --ci --shard=$(expr $CIRCLE_NODE_INDEX + 1)/$CIRCLE_NODE_TOTAL

yarn_test_build:
docker: *docker
Expand Down Expand Up @@ -482,28 +479,6 @@ workflows:
branches:
ignore:
- builds/facebook-www
matrix:
parameters:
args:
# Intentionally passing these as strings instead of creating a
# separate parameter per CLI argument, since it's easier to
# control/see which combinations we want to run.
- "-r=stable --env=development"
- "-r=stable --env=production"
- "-r=experimental --env=development"
- "-r=experimental --env=production"
- "-r=www-classic --env=development --variant=false"
- "-r=www-classic --env=production --variant=false"
- "-r=www-classic --env=development --variant=true"
- "-r=www-classic --env=production --variant=true"
- "-r=www-modern --env=development --variant=false"
- "-r=www-modern --env=production --variant=false"
- "-r=www-modern --env=development --variant=true"
- "-r=www-modern --env=production --variant=true"

# TODO: Test more persistent configurations?
- '-r=stable --env=development --persistent'
- '-r=experimental --env=development --persistent'
- yarn_build:
filters:
branches:
Expand Down
164 changes: 164 additions & 0 deletions jest.config.js
@@ -0,0 +1,164 @@
'use strict';

function createConfig({releaseChannel, env, variant, persistent}) {
let displayName = `${releaseChannel}-${env}`;
if (variant === true) {
displayName += '-variant';
}
if (persistent) {
displayName += '-persistent';
}

const setupFiles = [];
if (variant) {
setupFiles.push(require.resolve('./scripts/jest/setupEnvVariant.js'));
}
switch (env) {
case 'development':
setupFiles.push(require.resolve('./scripts/jest/setupEnvDevelopment.js'));
break;
case 'production':
setupFiles.push(require.resolve('./scripts/jest/setupEnvProduction.js'));
break;
default:
throw new Error(`Unexpected env: ${env}`);
}
setupFiles.push(require.resolve('./scripts/jest/setupEnvironment.js'));
if (persistent) {
setupFiles.push(require.resolve('./scripts/jest/setupTests.persistent.js'));
} else {
switch (releaseChannel) {
case 'www-classic':
case 'www-modern':
setupFiles.push(require.resolve('./scripts/jest/setupTests.www.js'));
break;
case 'experimental':
case 'stable':
// no special setup files
break;
default:
throw new Error(`Unexpected release channel: ${releaseChannel}`);
}
}
setupFiles.push(require.resolve('./scripts/jest/setupHostConfigs.js'));

const modulePathIgnorePatterns = [
'<rootDir>/scripts/rollup/shims/',
'<rootDir>/scripts/bench/',
'packages/react-devtools-extensions',
'packages/react-devtools-shared',
];

if (persistent) {
modulePathIgnorePatterns.push(
'ReactIncrementalPerf',
'ReactIncrementalUpdatesMinimalism',
'ReactIncrementalTriangle',
'ReactIncrementalReflection',
'forwardRef'
);
}

return {
displayName,
setupFiles,
modulePathIgnorePatterns,
transform: {
'.*':
env === 'development'
? require.resolve('./scripts/jest/preprocessor.dev.js')
: require.resolve('./scripts/jest/preprocessor.prod.js'),
},
prettierPath: require.resolve('prettier-2'),
setupFilesAfterEnv: [require.resolve('./scripts/jest/setupTests.js')],
// Only include files directly in __tests__, not in nested folders.
testRegex: '/__tests__/[^/]*(\\.js|\\.coffee|[^d]\\.ts)$',
moduleFileExtensions: ['js', 'json', 'node', 'coffee', 'ts'],
rootDir: process.cwd(),
roots: ['<rootDir>/packages', '<rootDir>/scripts'],
fakeTimers: {
enableGlobally: true,
legacyFakeTimers: true,
},
snapshotSerializers: [require.resolve('jest-snapshot-serializer-raw')],
testEnvironment: 'jsdom',
testRunner: 'jest-circus/runner',
};
}

module.exports = {
globalSetup: require.resolve('./scripts/jest/setupGlobal.js'),
collectCoverageFrom: ['packages/**/*.js'],

projects: [
createConfig({
releaseChannel: 'stable',
env: 'development',
}),
createConfig({
releaseChannel: 'stable',
env: 'production',
}),
createConfig({
releaseChannel: 'stable',
env: 'development',
persistent: true,
}),

createConfig({
releaseChannel: 'experimental',
env: 'development',
}),
createConfig({
releaseChannel: 'experimental',
env: 'production',
}),
createConfig({
releaseChannel: 'experimental',
env: 'development',
persistent: true,
}),

createConfig({
releaseChannel: 'www-classic',
env: 'development',
variant: false,
}),
createConfig({
releaseChannel: 'www-classic',
env: 'production',
variant: false,
}),
createConfig({
releaseChannel: 'www-classic',
env: 'development',
variant: true,
}),
createConfig({
releaseChannel: 'www-classic',
env: 'production',
variant: true,
}),

createConfig({
releaseChannel: 'www-modern',
env: 'development',
variant: false,
}),
createConfig({
releaseChannel: 'www-modern',
env: 'production',
variant: false,
}),
createConfig({
releaseChannel: 'www-modern',
env: 'development',
variant: true,
}),
createConfig({
releaseChannel: 'www-modern',
env: 'production',
variant: true,
}),
],
};
8 changes: 1 addition & 7 deletions package.json
Expand Up @@ -103,9 +103,6 @@
"devEngines": {
"node": "16.x || 18.x || 20.x || 21.x"
},
"jest": {
"testRegex": "/scripts/jest/dont-run-jest-directly\\.js$"
},
"scripts": {
"build": "node ./scripts/rollup/build-all-release-channels.js",
"build-for-devtools": "cross-env RELEASE_CHANNEL=experimental yarn build react/index,react/jsx,react-dom/index,react-dom/unstable_testing,react-dom/test-utils,react-is,react-debug-tools,scheduler,react-test-renderer,react-refresh,react-art --type=NODE",
Expand All @@ -116,10 +113,7 @@
"lint-build": "node ./scripts/rollup/validate/index.js",
"extract-errors": "node scripts/error-codes/extract-errors.js",
"postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json && node ./scripts/flow/createFlowConfigs.js",
"test": "node ./scripts/jest/jest-cli.js",
"test-stable": "node ./scripts/jest/jest-cli.js --release-channel=stable",
"test-www": "node ./scripts/jest/jest-cli.js --release-channel=www-modern",
"test-classic": "node ./scripts/jest/jest-cli.js --release-channel=www-classic",
"test": "jest",
"test-build-devtools": "node ./scripts/jest/jest-cli.js --build --project devtools --release-channel=experimental",
"test-dom-fixture": "cd fixtures/dom && yarn && yarn predev && yarn test",
"flow": "node ./scripts/tasks/flow.js",
Expand Down
32 changes: 0 additions & 32 deletions scripts/jest/config.base.js

This file was deleted.

110 changes: 0 additions & 110 deletions scripts/jest/config.build-devtools.js

This file was deleted.

0 comments on commit 4886c29

Please sign in to comment.