From a2e40878db8ad543fc235cc89f74cea7f1d63f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8C=E8=B4=A7=E6=9C=BA=E5=99=A8=E4=BA=BA?= Date: Fri, 21 Oct 2022 00:03:20 +0800 Subject: [PATCH] chore: support customize config setup --- es/index.js | 52 ---- es/setup.js | 213 -------------- es/setupAfterEnv.js | 1 - es/transformers/fileTransformer.js | 12 - es/transformers/jsTransformer.js | 26 -- jest.config.js | 4 + lib/index.js | 62 ---- lib/setup.js | 422 ---------------------------- lib/setupAfterEnv.js | 3 - lib/transformers/fileTransformer.js | 23 -- lib/transformers/jsTransformer.js | 33 --- package.json | 2 + src/index.ts | 44 ++- tests/setup.ts | 1 + tests/setupFilesAfterEnv.ts | 1 + 15 files changed, 40 insertions(+), 859 deletions(-) delete mode 100644 es/index.js delete mode 100644 es/setup.js delete mode 100644 es/setupAfterEnv.js delete mode 100644 es/transformers/fileTransformer.js delete mode 100644 es/transformers/jsTransformer.js create mode 100644 jest.config.js delete mode 100644 lib/index.js delete mode 100644 lib/setup.js delete mode 100644 lib/setupAfterEnv.js delete mode 100644 lib/transformers/fileTransformer.js delete mode 100644 lib/transformers/jsTransformer.js create mode 100644 tests/setup.ts create mode 100644 tests/setupFilesAfterEnv.ts diff --git a/es/index.js b/es/index.js deleted file mode 100644 index cfe69a2..0000000 --- a/es/index.js +++ /dev/null @@ -1,52 +0,0 @@ -import _objectSpread from "@babel/runtime/helpers/objectSpread2"; -import { runCLI } from 'jest'; -var ALIAS = { - t: 'testNamePattern', - w: 'maxWorkers', - u: 'updateSnapshot' -}; -export default function () { - var originOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var opts = _objectSpread({}, originOpts); - - var cwd = process.cwd(); // Fill jest alias - - Object.keys(ALIAS).forEach(function (key) { - if (opts[key]) { - opts[ALIAS[key]] = opts[key]; - delete opts[key]; - } - }); - var config = { - rootDir: process.cwd(), - testEnvironment: 'jsdom', - setupFiles: [require.resolve("./setup.js")], - setupFilesAfterEnv: [require.resolve("./setupAfterEnv.js")], - transform: { - '\\.(t|j)sx?$': require.resolve("./transformers/jsTransformer"), - '\\.svg$': require.resolve("./transformers/fileTransformer") - }, - // transformIgnorePatterns: [ - // // 加 [^/]*? 是为了兼容 tnpm 的目录结构 - // // 比如:_umi-test@1.5.5@umi-test - // `node_modules/(?!([^/]*?umi|[^/]*?umi-test|[^/]*?enzyme-adapter-react-16|${transformInclude.join( - // '|', - // )})/)`, - // ], - testMatch: ['**/?*.(spec|test|e2e).(j|t)s?(x)'], - moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'], - // moduleNameMapper: { - // '\\.(css|less|sass|scss)$': require.resolve('identity-obj-proxy'), - // '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': - // require.resolve('./fileMock.js'), - // ...(moduleNameMapper || {}), - // ...(userModuleNameMapper || {}), - // }, - testPathIgnorePatterns: ['/node_modules/'] // 用于设置 jest worker 启动的个数 - - }; - return runCLI(_objectSpread({ - config: JSON.stringify(config) - }, opts), [cwd]); -} \ No newline at end of file diff --git a/es/setup.js b/es/setup.js deleted file mode 100644 index 6370dab..0000000 --- a/es/setup.js +++ /dev/null @@ -1,213 +0,0 @@ -import "core-js/modules/es.symbol.js"; -import "core-js/modules/es.symbol.description.js"; -import "core-js/modules/es.symbol.async-iterator.js"; -import "core-js/modules/es.symbol.has-instance.js"; -import "core-js/modules/es.symbol.is-concat-spreadable.js"; -import "core-js/modules/es.symbol.iterator.js"; -import "core-js/modules/es.symbol.match.js"; -import "core-js/modules/es.symbol.match-all.js"; -import "core-js/modules/es.symbol.replace.js"; -import "core-js/modules/es.symbol.search.js"; -import "core-js/modules/es.symbol.species.js"; -import "core-js/modules/es.symbol.split.js"; -import "core-js/modules/es.symbol.to-primitive.js"; -import "core-js/modules/es.symbol.to-string-tag.js"; -import "core-js/modules/es.symbol.unscopables.js"; -import "core-js/modules/es.error.cause.js"; -import "core-js/modules/es.aggregate-error.js"; -import "core-js/modules/es.aggregate-error.cause.js"; -import "core-js/modules/es.array.at.js"; -import "core-js/modules/es.array.concat.js"; -import "core-js/modules/es.array.copy-within.js"; -import "core-js/modules/es.array.fill.js"; -import "core-js/modules/es.array.filter.js"; -import "core-js/modules/es.array.find.js"; -import "core-js/modules/es.array.find-index.js"; -import "core-js/modules/es.array.flat.js"; -import "core-js/modules/es.array.flat-map.js"; -import "core-js/modules/es.array.from.js"; -import "core-js/modules/es.array.includes.js"; -import "core-js/modules/es.array.iterator.js"; -import "core-js/modules/es.array.join.js"; -import "core-js/modules/es.array.map.js"; -import "core-js/modules/es.array.of.js"; -import "core-js/modules/es.array.slice.js"; -import "core-js/modules/es.array.sort.js"; -import "core-js/modules/es.array.species.js"; -import "core-js/modules/es.array.splice.js"; -import "core-js/modules/es.array.unscopables.flat.js"; -import "core-js/modules/es.array.unscopables.flat-map.js"; -import "core-js/modules/es.array-buffer.constructor.js"; -import "core-js/modules/es.date.to-primitive.js"; -import "core-js/modules/es.function.has-instance.js"; -import "core-js/modules/es.function.name.js"; -import "core-js/modules/es.global-this.js"; -import "core-js/modules/es.json.stringify.js"; -import "core-js/modules/es.json.to-string-tag.js"; -import "core-js/modules/es.map.js"; -import "core-js/modules/es.math.acosh.js"; -import "core-js/modules/es.math.asinh.js"; -import "core-js/modules/es.math.atanh.js"; -import "core-js/modules/es.math.cbrt.js"; -import "core-js/modules/es.math.clz32.js"; -import "core-js/modules/es.math.cosh.js"; -import "core-js/modules/es.math.expm1.js"; -import "core-js/modules/es.math.fround.js"; -import "core-js/modules/es.math.hypot.js"; -import "core-js/modules/es.math.imul.js"; -import "core-js/modules/es.math.log10.js"; -import "core-js/modules/es.math.log1p.js"; -import "core-js/modules/es.math.log2.js"; -import "core-js/modules/es.math.sign.js"; -import "core-js/modules/es.math.sinh.js"; -import "core-js/modules/es.math.tanh.js"; -import "core-js/modules/es.math.to-string-tag.js"; -import "core-js/modules/es.math.trunc.js"; -import "core-js/modules/es.number.constructor.js"; -import "core-js/modules/es.number.epsilon.js"; -import "core-js/modules/es.number.is-finite.js"; -import "core-js/modules/es.number.is-integer.js"; -import "core-js/modules/es.number.is-nan.js"; -import "core-js/modules/es.number.is-safe-integer.js"; -import "core-js/modules/es.number.max-safe-integer.js"; -import "core-js/modules/es.number.min-safe-integer.js"; -import "core-js/modules/es.number.parse-float.js"; -import "core-js/modules/es.number.parse-int.js"; -import "core-js/modules/es.number.to-exponential.js"; -import "core-js/modules/es.number.to-fixed.js"; -import "core-js/modules/es.object.assign.js"; -import "core-js/modules/es.object.define-getter.js"; -import "core-js/modules/es.object.define-setter.js"; -import "core-js/modules/es.object.entries.js"; -import "core-js/modules/es.object.freeze.js"; -import "core-js/modules/es.object.from-entries.js"; -import "core-js/modules/es.object.get-own-property-descriptor.js"; -import "core-js/modules/es.object.get-own-property-descriptors.js"; -import "core-js/modules/es.object.get-own-property-names.js"; -import "core-js/modules/es.object.get-prototype-of.js"; -import "core-js/modules/es.object.has-own.js"; -import "core-js/modules/es.object.is.js"; -import "core-js/modules/es.object.is-extensible.js"; -import "core-js/modules/es.object.is-frozen.js"; -import "core-js/modules/es.object.is-sealed.js"; -import "core-js/modules/es.object.keys.js"; -import "core-js/modules/es.object.lookup-getter.js"; -import "core-js/modules/es.object.lookup-setter.js"; -import "core-js/modules/es.object.prevent-extensions.js"; -import "core-js/modules/es.object.seal.js"; -import "core-js/modules/es.object.to-string.js"; -import "core-js/modules/es.object.values.js"; -import "core-js/modules/es.promise.js"; -import "core-js/modules/es.promise.all-settled.js"; -import "core-js/modules/es.promise.any.js"; -import "core-js/modules/es.promise.finally.js"; -import "core-js/modules/es.reflect.apply.js"; -import "core-js/modules/es.reflect.construct.js"; -import "core-js/modules/es.reflect.define-property.js"; -import "core-js/modules/es.reflect.delete-property.js"; -import "core-js/modules/es.reflect.get.js"; -import "core-js/modules/es.reflect.get-own-property-descriptor.js"; -import "core-js/modules/es.reflect.get-prototype-of.js"; -import "core-js/modules/es.reflect.has.js"; -import "core-js/modules/es.reflect.is-extensible.js"; -import "core-js/modules/es.reflect.own-keys.js"; -import "core-js/modules/es.reflect.prevent-extensions.js"; -import "core-js/modules/es.reflect.set.js"; -import "core-js/modules/es.reflect.set-prototype-of.js"; -import "core-js/modules/es.reflect.to-string-tag.js"; -import "core-js/modules/es.regexp.constructor.js"; -import "core-js/modules/es.regexp.dot-all.js"; -import "core-js/modules/es.regexp.exec.js"; -import "core-js/modules/es.regexp.flags.js"; -import "core-js/modules/es.regexp.sticky.js"; -import "core-js/modules/es.regexp.test.js"; -import "core-js/modules/es.regexp.to-string.js"; -import "core-js/modules/es.set.js"; -import "core-js/modules/es.string.at-alternative.js"; -import "core-js/modules/es.string.code-point-at.js"; -import "core-js/modules/es.string.ends-with.js"; -import "core-js/modules/es.string.from-code-point.js"; -import "core-js/modules/es.string.includes.js"; -import "core-js/modules/es.string.iterator.js"; -import "core-js/modules/es.string.match.js"; -import "core-js/modules/es.string.match-all.js"; -import "core-js/modules/es.string.pad-end.js"; -import "core-js/modules/es.string.pad-start.js"; -import "core-js/modules/es.string.raw.js"; -import "core-js/modules/es.string.repeat.js"; -import "core-js/modules/es.string.replace.js"; -import "core-js/modules/es.string.replace-all.js"; -import "core-js/modules/es.string.search.js"; -import "core-js/modules/es.string.split.js"; -import "core-js/modules/es.string.starts-with.js"; -import "core-js/modules/es.string.trim.js"; -import "core-js/modules/es.string.trim-end.js"; -import "core-js/modules/es.string.trim-start.js"; -import "core-js/modules/es.string.anchor.js"; -import "core-js/modules/es.string.big.js"; -import "core-js/modules/es.string.blink.js"; -import "core-js/modules/es.string.bold.js"; -import "core-js/modules/es.string.fixed.js"; -import "core-js/modules/es.string.fontcolor.js"; -import "core-js/modules/es.string.fontsize.js"; -import "core-js/modules/es.string.italics.js"; -import "core-js/modules/es.string.link.js"; -import "core-js/modules/es.string.small.js"; -import "core-js/modules/es.string.strike.js"; -import "core-js/modules/es.string.sub.js"; -import "core-js/modules/es.string.sup.js"; -import "core-js/modules/es.typed-array.float32-array.js"; -import "core-js/modules/es.typed-array.float64-array.js"; -import "core-js/modules/es.typed-array.int8-array.js"; -import "core-js/modules/es.typed-array.int16-array.js"; -import "core-js/modules/es.typed-array.int32-array.js"; -import "core-js/modules/es.typed-array.uint8-array.js"; -import "core-js/modules/es.typed-array.uint8-clamped-array.js"; -import "core-js/modules/es.typed-array.uint16-array.js"; -import "core-js/modules/es.typed-array.uint32-array.js"; -import "core-js/modules/es.typed-array.at.js"; -import "core-js/modules/es.typed-array.copy-within.js"; -import "core-js/modules/es.typed-array.every.js"; -import "core-js/modules/es.typed-array.fill.js"; -import "core-js/modules/es.typed-array.filter.js"; -import "core-js/modules/es.typed-array.find.js"; -import "core-js/modules/es.typed-array.find-index.js"; -import "core-js/modules/es.typed-array.for-each.js"; -import "core-js/modules/es.typed-array.from.js"; -import "core-js/modules/es.typed-array.includes.js"; -import "core-js/modules/es.typed-array.index-of.js"; -import "core-js/modules/es.typed-array.iterator.js"; -import "core-js/modules/es.typed-array.join.js"; -import "core-js/modules/es.typed-array.last-index-of.js"; -import "core-js/modules/es.typed-array.map.js"; -import "core-js/modules/es.typed-array.of.js"; -import "core-js/modules/es.typed-array.reduce.js"; -import "core-js/modules/es.typed-array.reduce-right.js"; -import "core-js/modules/es.typed-array.reverse.js"; -import "core-js/modules/es.typed-array.set.js"; -import "core-js/modules/es.typed-array.slice.js"; -import "core-js/modules/es.typed-array.some.js"; -import "core-js/modules/es.typed-array.sort.js"; -import "core-js/modules/es.typed-array.subarray.js"; -import "core-js/modules/es.typed-array.to-locale-string.js"; -import "core-js/modules/es.typed-array.to-string.js"; -import "core-js/modules/es.weak-map.js"; -import "core-js/modules/es.weak-set.js"; -import "core-js/modules/web.atob.js"; -import "core-js/modules/web.btoa.js"; -import "core-js/modules/web.dom-collections.for-each.js"; -import "core-js/modules/web.dom-collections.iterator.js"; -import "core-js/modules/web.dom-exception.constructor.js"; -import "core-js/modules/web.dom-exception.stack.js"; -import "core-js/modules/web.dom-exception.to-string-tag.js"; -import "core-js/modules/web.queue-microtask.js"; -import "core-js/modules/web.structured-clone.js"; -import "core-js/modules/web.url.js"; -import "core-js/modules/web.url.to-json.js"; -import "core-js/modules/web.url-search-params.js"; -import 'regenerator-runtime/runtime'; -/* eslint-disable import/first */ - -global.requestAnimationFrame = global.requestAnimationFrame || function requestAnimationFrame(callback) { - setTimeout(callback, 0); -}; \ No newline at end of file diff --git a/es/setupAfterEnv.js b/es/setupAfterEnv.js deleted file mode 100644 index 331666c..0000000 --- a/es/setupAfterEnv.js +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom'; \ No newline at end of file diff --git a/es/transformers/fileTransformer.js b/es/transformers/fileTransformer.js deleted file mode 100644 index 254a1b6..0000000 --- a/es/transformers/fileTransformer.js +++ /dev/null @@ -1,12 +0,0 @@ -import path from "path"; -export default { - process: function process(src, filename) { - var assetFilename = JSON.stringify(path.basename(filename)); - - if (filename.match(/\.svg$/)) { - return "module.exports = {\n __esModule: true,\n default: ".concat(assetFilename, ",\n ReactComponent: ({ svgRef, ...props }) => ({\n $$typeof: Symbol.for('react.element'),\n type: 'svg',\n ref: svgRef || null,\n key: null,\n props: Object.assign({}, props, {\n children: ").concat(assetFilename, "\n })\n }),\n };"); - } - - return "module.exports = ".concat(assetFilename, ";"); - } -}; \ No newline at end of file diff --git a/es/transformers/jsTransformer.js b/es/transformers/jsTransformer.js deleted file mode 100644 index d1b0e31..0000000 --- a/es/transformers/jsTransformer.js +++ /dev/null @@ -1,26 +0,0 @@ -import babelJest from 'babel-jest'; -import { dirname } from 'path'; -import { compatDirname } from 'umi-utils'; -var cwd = process.cwd(); -module.exports = babelJest.createTransformer({ - presets: [require.resolve('@babel/preset-typescript'), [require.resolve('babel-preset-umi'), { - transformRuntime: false - }]], - plugins: [[require.resolve('babel-plugin-module-resolver'), { - alias: { - // Projects don't need to install react, react-dom and enzyme - react: compatDirname('react/package', cwd, dirname(require.resolve('react/package.json'))), - 'react-dom': compatDirname('react-dom/package', cwd, dirname(require.resolve('react-dom/package.json'))) // enzyme: compatDirname( - // 'enzyme/package.json', - // cwd, - // dirname(require.resolve('enzyme/package.json')), - // ), - // 'enzyme-adapter-react-16': compatDirname( - // 'enzyme-adapter-react-16/package.json', - // cwd, - // dirname(require.resolve('enzyme-adapter-react-16/package.json')), - // ), - - } - }, 'umi-test']] -}); \ No newline at end of file diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..d55dabc --- /dev/null +++ b/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + setupFiles: ['./tests/setup.ts'], + setupFilesAfterEnv: ['./tests/setupFilesAfterEnv.ts'], +}; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 5d02578..0000000 --- a/lib/index.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; - -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _default; - -var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); - -var _jest = require("jest"); - -var ALIAS = { - t: 'testNamePattern', - w: 'maxWorkers', - u: 'updateSnapshot' -}; - -function _default() { - var originOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var opts = (0, _objectSpread2.default)({}, originOpts); - var cwd = process.cwd(); // Fill jest alias - - Object.keys(ALIAS).forEach(function (key) { - if (opts[key]) { - opts[ALIAS[key]] = opts[key]; - delete opts[key]; - } - }); - var config = { - rootDir: process.cwd(), - testEnvironment: 'jsdom', - setupFiles: [require.resolve("./setup.js")], - setupFilesAfterEnv: [require.resolve("./setupAfterEnv.js")], - transform: { - '\\.(t|j)sx?$': require.resolve("./transformers/jsTransformer"), - '\\.svg$': require.resolve("./transformers/fileTransformer") - }, - // transformIgnorePatterns: [ - // // 加 [^/]*? 是为了兼容 tnpm 的目录结构 - // // 比如:_umi-test@1.5.5@umi-test - // `node_modules/(?!([^/]*?umi|[^/]*?umi-test|[^/]*?enzyme-adapter-react-16|${transformInclude.join( - // '|', - // )})/)`, - // ], - testMatch: ['**/?*.(spec|test|e2e).(j|t)s?(x)'], - moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'], - // moduleNameMapper: { - // '\\.(css|less|sass|scss)$': require.resolve('identity-obj-proxy'), - // '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': - // require.resolve('./fileMock.js'), - // ...(moduleNameMapper || {}), - // ...(userModuleNameMapper || {}), - // }, - testPathIgnorePatterns: ['/node_modules/'] // 用于设置 jest worker 启动的个数 - - }; - return (0, _jest.runCLI)((0, _objectSpread2.default)({ - config: JSON.stringify(config) - }, opts), [cwd]); -} \ No newline at end of file diff --git a/lib/setup.js b/lib/setup.js deleted file mode 100644 index 420932c..0000000 --- a/lib/setup.js +++ /dev/null @@ -1,422 +0,0 @@ -"use strict"; - -require("core-js/modules/es.symbol.js"); - -require("core-js/modules/es.symbol.description.js"); - -require("core-js/modules/es.symbol.async-iterator.js"); - -require("core-js/modules/es.symbol.has-instance.js"); - -require("core-js/modules/es.symbol.is-concat-spreadable.js"); - -require("core-js/modules/es.symbol.iterator.js"); - -require("core-js/modules/es.symbol.match.js"); - -require("core-js/modules/es.symbol.match-all.js"); - -require("core-js/modules/es.symbol.replace.js"); - -require("core-js/modules/es.symbol.search.js"); - -require("core-js/modules/es.symbol.species.js"); - -require("core-js/modules/es.symbol.split.js"); - -require("core-js/modules/es.symbol.to-primitive.js"); - -require("core-js/modules/es.symbol.to-string-tag.js"); - -require("core-js/modules/es.symbol.unscopables.js"); - -require("core-js/modules/es.error.cause.js"); - -require("core-js/modules/es.aggregate-error.js"); - -require("core-js/modules/es.aggregate-error.cause.js"); - -require("core-js/modules/es.array.at.js"); - -require("core-js/modules/es.array.concat.js"); - -require("core-js/modules/es.array.copy-within.js"); - -require("core-js/modules/es.array.fill.js"); - -require("core-js/modules/es.array.filter.js"); - -require("core-js/modules/es.array.find.js"); - -require("core-js/modules/es.array.find-index.js"); - -require("core-js/modules/es.array.flat.js"); - -require("core-js/modules/es.array.flat-map.js"); - -require("core-js/modules/es.array.from.js"); - -require("core-js/modules/es.array.includes.js"); - -require("core-js/modules/es.array.iterator.js"); - -require("core-js/modules/es.array.join.js"); - -require("core-js/modules/es.array.map.js"); - -require("core-js/modules/es.array.of.js"); - -require("core-js/modules/es.array.slice.js"); - -require("core-js/modules/es.array.sort.js"); - -require("core-js/modules/es.array.species.js"); - -require("core-js/modules/es.array.splice.js"); - -require("core-js/modules/es.array.unscopables.flat.js"); - -require("core-js/modules/es.array.unscopables.flat-map.js"); - -require("core-js/modules/es.array-buffer.constructor.js"); - -require("core-js/modules/es.date.to-primitive.js"); - -require("core-js/modules/es.function.has-instance.js"); - -require("core-js/modules/es.function.name.js"); - -require("core-js/modules/es.global-this.js"); - -require("core-js/modules/es.json.stringify.js"); - -require("core-js/modules/es.json.to-string-tag.js"); - -require("core-js/modules/es.map.js"); - -require("core-js/modules/es.math.acosh.js"); - -require("core-js/modules/es.math.asinh.js"); - -require("core-js/modules/es.math.atanh.js"); - -require("core-js/modules/es.math.cbrt.js"); - -require("core-js/modules/es.math.clz32.js"); - -require("core-js/modules/es.math.cosh.js"); - -require("core-js/modules/es.math.expm1.js"); - -require("core-js/modules/es.math.fround.js"); - -require("core-js/modules/es.math.hypot.js"); - -require("core-js/modules/es.math.imul.js"); - -require("core-js/modules/es.math.log10.js"); - -require("core-js/modules/es.math.log1p.js"); - -require("core-js/modules/es.math.log2.js"); - -require("core-js/modules/es.math.sign.js"); - -require("core-js/modules/es.math.sinh.js"); - -require("core-js/modules/es.math.tanh.js"); - -require("core-js/modules/es.math.to-string-tag.js"); - -require("core-js/modules/es.math.trunc.js"); - -require("core-js/modules/es.number.constructor.js"); - -require("core-js/modules/es.number.epsilon.js"); - -require("core-js/modules/es.number.is-finite.js"); - -require("core-js/modules/es.number.is-integer.js"); - -require("core-js/modules/es.number.is-nan.js"); - -require("core-js/modules/es.number.is-safe-integer.js"); - -require("core-js/modules/es.number.max-safe-integer.js"); - -require("core-js/modules/es.number.min-safe-integer.js"); - -require("core-js/modules/es.number.parse-float.js"); - -require("core-js/modules/es.number.parse-int.js"); - -require("core-js/modules/es.number.to-exponential.js"); - -require("core-js/modules/es.number.to-fixed.js"); - -require("core-js/modules/es.object.assign.js"); - -require("core-js/modules/es.object.define-getter.js"); - -require("core-js/modules/es.object.define-setter.js"); - -require("core-js/modules/es.object.entries.js"); - -require("core-js/modules/es.object.freeze.js"); - -require("core-js/modules/es.object.from-entries.js"); - -require("core-js/modules/es.object.get-own-property-descriptor.js"); - -require("core-js/modules/es.object.get-own-property-descriptors.js"); - -require("core-js/modules/es.object.get-own-property-names.js"); - -require("core-js/modules/es.object.get-prototype-of.js"); - -require("core-js/modules/es.object.has-own.js"); - -require("core-js/modules/es.object.is.js"); - -require("core-js/modules/es.object.is-extensible.js"); - -require("core-js/modules/es.object.is-frozen.js"); - -require("core-js/modules/es.object.is-sealed.js"); - -require("core-js/modules/es.object.keys.js"); - -require("core-js/modules/es.object.lookup-getter.js"); - -require("core-js/modules/es.object.lookup-setter.js"); - -require("core-js/modules/es.object.prevent-extensions.js"); - -require("core-js/modules/es.object.seal.js"); - -require("core-js/modules/es.object.to-string.js"); - -require("core-js/modules/es.object.values.js"); - -require("core-js/modules/es.promise.js"); - -require("core-js/modules/es.promise.all-settled.js"); - -require("core-js/modules/es.promise.any.js"); - -require("core-js/modules/es.promise.finally.js"); - -require("core-js/modules/es.reflect.apply.js"); - -require("core-js/modules/es.reflect.construct.js"); - -require("core-js/modules/es.reflect.define-property.js"); - -require("core-js/modules/es.reflect.delete-property.js"); - -require("core-js/modules/es.reflect.get.js"); - -require("core-js/modules/es.reflect.get-own-property-descriptor.js"); - -require("core-js/modules/es.reflect.get-prototype-of.js"); - -require("core-js/modules/es.reflect.has.js"); - -require("core-js/modules/es.reflect.is-extensible.js"); - -require("core-js/modules/es.reflect.own-keys.js"); - -require("core-js/modules/es.reflect.prevent-extensions.js"); - -require("core-js/modules/es.reflect.set.js"); - -require("core-js/modules/es.reflect.set-prototype-of.js"); - -require("core-js/modules/es.reflect.to-string-tag.js"); - -require("core-js/modules/es.regexp.constructor.js"); - -require("core-js/modules/es.regexp.dot-all.js"); - -require("core-js/modules/es.regexp.exec.js"); - -require("core-js/modules/es.regexp.flags.js"); - -require("core-js/modules/es.regexp.sticky.js"); - -require("core-js/modules/es.regexp.test.js"); - -require("core-js/modules/es.regexp.to-string.js"); - -require("core-js/modules/es.set.js"); - -require("core-js/modules/es.string.at-alternative.js"); - -require("core-js/modules/es.string.code-point-at.js"); - -require("core-js/modules/es.string.ends-with.js"); - -require("core-js/modules/es.string.from-code-point.js"); - -require("core-js/modules/es.string.includes.js"); - -require("core-js/modules/es.string.iterator.js"); - -require("core-js/modules/es.string.match.js"); - -require("core-js/modules/es.string.match-all.js"); - -require("core-js/modules/es.string.pad-end.js"); - -require("core-js/modules/es.string.pad-start.js"); - -require("core-js/modules/es.string.raw.js"); - -require("core-js/modules/es.string.repeat.js"); - -require("core-js/modules/es.string.replace.js"); - -require("core-js/modules/es.string.replace-all.js"); - -require("core-js/modules/es.string.search.js"); - -require("core-js/modules/es.string.split.js"); - -require("core-js/modules/es.string.starts-with.js"); - -require("core-js/modules/es.string.trim.js"); - -require("core-js/modules/es.string.trim-end.js"); - -require("core-js/modules/es.string.trim-start.js"); - -require("core-js/modules/es.string.anchor.js"); - -require("core-js/modules/es.string.big.js"); - -require("core-js/modules/es.string.blink.js"); - -require("core-js/modules/es.string.bold.js"); - -require("core-js/modules/es.string.fixed.js"); - -require("core-js/modules/es.string.fontcolor.js"); - -require("core-js/modules/es.string.fontsize.js"); - -require("core-js/modules/es.string.italics.js"); - -require("core-js/modules/es.string.link.js"); - -require("core-js/modules/es.string.small.js"); - -require("core-js/modules/es.string.strike.js"); - -require("core-js/modules/es.string.sub.js"); - -require("core-js/modules/es.string.sup.js"); - -require("core-js/modules/es.typed-array.float32-array.js"); - -require("core-js/modules/es.typed-array.float64-array.js"); - -require("core-js/modules/es.typed-array.int8-array.js"); - -require("core-js/modules/es.typed-array.int16-array.js"); - -require("core-js/modules/es.typed-array.int32-array.js"); - -require("core-js/modules/es.typed-array.uint8-array.js"); - -require("core-js/modules/es.typed-array.uint8-clamped-array.js"); - -require("core-js/modules/es.typed-array.uint16-array.js"); - -require("core-js/modules/es.typed-array.uint32-array.js"); - -require("core-js/modules/es.typed-array.at.js"); - -require("core-js/modules/es.typed-array.copy-within.js"); - -require("core-js/modules/es.typed-array.every.js"); - -require("core-js/modules/es.typed-array.fill.js"); - -require("core-js/modules/es.typed-array.filter.js"); - -require("core-js/modules/es.typed-array.find.js"); - -require("core-js/modules/es.typed-array.find-index.js"); - -require("core-js/modules/es.typed-array.for-each.js"); - -require("core-js/modules/es.typed-array.from.js"); - -require("core-js/modules/es.typed-array.includes.js"); - -require("core-js/modules/es.typed-array.index-of.js"); - -require("core-js/modules/es.typed-array.iterator.js"); - -require("core-js/modules/es.typed-array.join.js"); - -require("core-js/modules/es.typed-array.last-index-of.js"); - -require("core-js/modules/es.typed-array.map.js"); - -require("core-js/modules/es.typed-array.of.js"); - -require("core-js/modules/es.typed-array.reduce.js"); - -require("core-js/modules/es.typed-array.reduce-right.js"); - -require("core-js/modules/es.typed-array.reverse.js"); - -require("core-js/modules/es.typed-array.set.js"); - -require("core-js/modules/es.typed-array.slice.js"); - -require("core-js/modules/es.typed-array.some.js"); - -require("core-js/modules/es.typed-array.sort.js"); - -require("core-js/modules/es.typed-array.subarray.js"); - -require("core-js/modules/es.typed-array.to-locale-string.js"); - -require("core-js/modules/es.typed-array.to-string.js"); - -require("core-js/modules/es.weak-map.js"); - -require("core-js/modules/es.weak-set.js"); - -require("core-js/modules/web.atob.js"); - -require("core-js/modules/web.btoa.js"); - -require("core-js/modules/web.dom-collections.for-each.js"); - -require("core-js/modules/web.dom-collections.iterator.js"); - -require("core-js/modules/web.dom-exception.constructor.js"); - -require("core-js/modules/web.dom-exception.stack.js"); - -require("core-js/modules/web.dom-exception.to-string-tag.js"); - -require("core-js/modules/web.queue-microtask.js"); - -require("core-js/modules/web.structured-clone.js"); - -require("core-js/modules/web.url.js"); - -require("core-js/modules/web.url.to-json.js"); - -require("core-js/modules/web.url-search-params.js"); - -require("regenerator-runtime/runtime"); - -/* eslint-disable import/first */ -global.requestAnimationFrame = global.requestAnimationFrame || function requestAnimationFrame(callback) { - setTimeout(callback, 0); -}; \ No newline at end of file diff --git a/lib/setupAfterEnv.js b/lib/setupAfterEnv.js deleted file mode 100644 index a0b380a..0000000 --- a/lib/setupAfterEnv.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; - -require("@testing-library/jest-dom"); \ No newline at end of file diff --git a/lib/transformers/fileTransformer.js b/lib/transformers/fileTransformer.js deleted file mode 100644 index 321c234..0000000 --- a/lib/transformers/fileTransformer.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _path = _interopRequireDefault(require("path")); - -var _default = { - process: function process(src, filename) { - var assetFilename = JSON.stringify(_path.default.basename(filename)); - - if (filename.match(/\.svg$/)) { - return "module.exports = {\n __esModule: true,\n default: ".concat(assetFilename, ",\n ReactComponent: ({ svgRef, ...props }) => ({\n $$typeof: Symbol.for('react.element'),\n type: 'svg',\n ref: svgRef || null,\n key: null,\n props: Object.assign({}, props, {\n children: ").concat(assetFilename, "\n })\n }),\n };"); - } - - return "module.exports = ".concat(assetFilename, ";"); - } -}; -exports.default = _default; \ No newline at end of file diff --git a/lib/transformers/jsTransformer.js b/lib/transformers/jsTransformer.js deleted file mode 100644 index 95f84d5..0000000 --- a/lib/transformers/jsTransformer.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; - -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; - -var _babelJest = _interopRequireDefault(require("babel-jest")); - -var _path = require("path"); - -var _umiUtils = require("umi-utils"); - -var cwd = process.cwd(); -module.exports = _babelJest.default.createTransformer({ - presets: [require.resolve('@babel/preset-typescript'), [require.resolve('babel-preset-umi'), { - transformRuntime: false - }]], - plugins: [[require.resolve('babel-plugin-module-resolver'), { - alias: { - // Projects don't need to install react, react-dom and enzyme - react: (0, _umiUtils.compatDirname)('react/package', cwd, (0, _path.dirname)(require.resolve('react/package.json'))), - 'react-dom': (0, _umiUtils.compatDirname)('react-dom/package', cwd, (0, _path.dirname)(require.resolve('react-dom/package.json'))) // enzyme: compatDirname( - // 'enzyme/package.json', - // cwd, - // dirname(require.resolve('enzyme/package.json')), - // ), - // 'enzyme-adapter-react-16': compatDirname( - // 'enzyme-adapter-react-16/package.json', - // cwd, - // dirname(require.resolve('enzyme-adapter-react-16/package.json')), - // ), - - } - }, 'umi-test']] -}); \ No newline at end of file diff --git a/package.json b/package.json index 1c1719d..22cb0bd 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@testing-library/react": "^13.0.0", "babel-preset-umi": "^1.8.4", "core-js": "^3.25.5", + "fs-extra": "^10.1.0", "jest": "^29.2.1", "jest-environment-jsdom": "^29.2.0", "regenerator-runtime": "^0.13.10", @@ -48,6 +49,7 @@ "yargs-parser": "^21.1.1" }, "devDependencies": { + "@types/fs-extra": "^9.0.13", "@types/jest": "^29.2.0", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/src/index.ts b/src/index.ts index c1437bc..ebb5135 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,6 @@ import { runCLI } from 'jest'; +import path from 'path'; +import fs from 'fs-extra'; const ALIAS = { t: 'testNamePattern', @@ -6,18 +8,7 @@ const ALIAS = { u: 'updateSnapshot', }; -export default function (originOpts: any = {}) { - const opts = { ...originOpts }; - const cwd = process.cwd(); - - // Fill jest alias - Object.keys(ALIAS).forEach((key) => { - if (opts[key]) { - opts[ALIAS[key]] = opts[key]; - delete opts[key]; - } - }); - +export function getConfig() { const config = { rootDir: process.cwd(), testEnvironment: 'jsdom', @@ -47,6 +38,35 @@ export default function (originOpts: any = {}) { // 用于设置 jest worker 启动的个数 }; + return config; +} + +export default function (originOpts: any = {}) { + const opts = { ...originOpts }; + const cwd = process.cwd(); + + let config = getConfig(); + + // Merge `jest.config.js` + const userJestConfigFile = path.resolve(cwd, 'jest.config.js'); + if (fs.existsSync(userJestConfigFile)) { + const { setupFiles = [], setupFilesAfterEnv = [], ...restConfig } = require(userJestConfigFile); + config = { + ...config, + ...restConfig, + setupFiles: [...config.setupFiles, ...setupFiles], + setupFilesAfterEnv: [...config.setupFilesAfterEnv, ...setupFilesAfterEnv], + }; + } + + // Fill jest alias + Object.keys(ALIAS).forEach((key) => { + if (opts[key]) { + opts[ALIAS[key]] = opts[key]; + delete opts[key]; + } + }); + return runCLI( { config: JSON.stringify(config), diff --git a/tests/setup.ts b/tests/setup.ts new file mode 100644 index 0000000..5b235cb --- /dev/null +++ b/tests/setup.ts @@ -0,0 +1 @@ +console.log('set up'); \ No newline at end of file diff --git a/tests/setupFilesAfterEnv.ts b/tests/setupFilesAfterEnv.ts new file mode 100644 index 0000000..01134f5 --- /dev/null +++ b/tests/setupFilesAfterEnv.ts @@ -0,0 +1 @@ +console.log('set up after env'); \ No newline at end of file