fusion-cli/build/jest/base-jest-config.js (77 lines of code) (raw):
/** Copyright (c) 2018 Uber Technologies, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
/* eslint-env node */
const fs = require('fs');
const {dirname} = require('path');
const rootDir = process.env.NODE_PRESERVE_SYMLINKS
? dirname(`${process.cwd()}/package.json`)
: dirname(fs.realpathSync(`${process.cwd()}/package.json`));
const matchField = process.env.TEST_REGEX ? 'testRegex' : 'testMatch';
const matchValue = process.env.TEST_FOLDER
? [`**/${process.env.TEST_FOLDER || '__tests__'}/**/*.js`]
: process.env.TEST_REGEX ||
(process.env.TEST_MATCH || '**/__tests__/**/*.js').split(',');
function getReactVersion(meta) {
const react =
(meta.dependencies && meta.dependencies.react) ||
(meta.devDependencies && meta.devDependencies.react) ||
(meta.peerDependencies && meta.peerDependencies.react);
return react
.split('.')
.shift()
.match(/\d+/);
}
function hasEnzyme(meta) {
const enzyme =
(meta.dependencies && meta.dependencies.enzyme) ||
(meta.devDependencies && meta.devDependencies.enzyme);
return Boolean(enzyme);
}
function getReactSetup() {
// $FlowFixMe
const meta = require(rootDir + '/package.json');
if (hasEnzyme(meta)) {
try {
return [
require.resolve(`./jest-framework-setup-${getReactVersion(meta)}.js`),
];
} catch (e) {
return [];
}
}
return [];
}
const reactSetup = getReactSetup();
function getTransformIgnorePatterns() {
const defaults = ['/node_modules/(?!(fusion-cli.*build))'];
try {
const path = require('path');
// $FlowFixMe
const fusionrc = require(path.resolve(process.cwd(), '.fusionrc.js'));
return fusionrc.jest.transformIgnorePatterns;
} catch (e) {
return defaults;
}
}
const transformIgnorePatterns = getTransformIgnorePatterns();
module.exports = {
coverageDirectory: `${rootDir}/coverage`,
coverageReporters: ['json'],
rootDir,
transform: {
'\\.js$': require.resolve('./jest-transformer.js'),
'\\.(gql|graphql)$': require.resolve('./graphql-jest-transformer.js'),
},
transformIgnorePatterns,
setupFiles: [require.resolve('./jest-framework-shims.js'), ...reactSetup],
snapshotSerializers:
reactSetup.length > 0 ? [require.resolve('enzyme-to-json/serializer')] : [],
[matchField]: matchValue,
testURL: 'http://localhost:3000/',
collectCoverageFrom: [
'src/**/*.js',
'!**/__generated__/**',
'!**/__integration__/**',
'!**/__tests__/**',
'!**/node_modules/**',
...(process.env.COVERAGE_PATHS
? process.env.COVERAGE_PATHS.split(',')
: []),
],
testResultsProcessor: require.resolve('./results-processor.js'),
};