diff --git a/packages/react-scripts/scripts/utils/createJestConfig.js b/packages/react-scripts/scripts/utils/createJestConfig.js index 2f3eda1b80a..75736cfaee3 100644 --- a/packages/react-scripts/scripts/utils/createJestConfig.js +++ b/packages/react-scripts/scripts/utils/createJestConfig.js @@ -75,25 +75,44 @@ module.exports = (resolve, rootDir, isEjecting) => { }); const unsupportedKeys = Object.keys(overrides); if (unsupportedKeys.length) { - console.error( - chalk.red( - 'Out of the box, Create React App only supports overriding ' + - 'these Jest options:\n\n' + - supportedKeys.map(key => chalk.bold(' \u2022 ' + key)).join('\n') + - '.\n\n' + - 'These options in your package.json Jest configuration ' + - 'are not currently supported by Create React App:\n\n' + - unsupportedKeys - .map(key => chalk.bold(' \u2022 ' + key)) - .join('\n') + - '\n\nIf you wish to override other Jest options, you need to ' + - 'eject from the default setup. You can do so by running ' + - chalk.bold('npm run eject') + - ' but remember that this is a one-way operation. ' + - 'You may also file an issue with Create React App to discuss ' + - 'supporting more options out of the box.\n' - ) - ); + const isOverridingSetupFile = + unsupportedKeys.indexOf('setupTestFrameworkScriptFile') > -1; + + if (isOverridingSetupFile) { + console.error( + chalk.red( + 'We detected ' + + chalk.bold('setupTestFrameworkScriptFile') + + ' in your package.json.\n\n' + + 'Remove it from Jest configuration, and put the initialization code in ' + + chalk.bold('src/setupTests.js') + + '.\nThis file will be loaded automatically.\n' + ) + ); + } else { + console.error( + chalk.red( + '\nOut of the box, Create React App only supports overriding ' + + 'these Jest options:\n\n' + + supportedKeys + .map(key => chalk.bold(' \u2022 ' + key)) + .join('\n') + + '.\n\n' + + 'These options in your package.json Jest configuration ' + + 'are not currently supported by Create React App:\n\n' + + unsupportedKeys + .map(key => chalk.bold(' \u2022 ' + key)) + .join('\n') + + '\n\nIf you wish to override other Jest options, you need to ' + + 'eject from the default setup. You can do so by running ' + + chalk.bold('npm run eject') + + ' but remember that this is a one-way operation. ' + + 'You may also file an issue with Create React App to discuss ' + + 'supporting more options out of the box.\n' + ) + ); + } + process.exit(1); } }