create-jest-runner icon indicating copy to clipboard operation
create-jest-runner copied to clipboard

fix: exclude dynamic import plugin from babel config

Open SimenB opened this issue 3 years ago • 4 comments

https://github.com/jest-community/create-jest-runner/pull/148#discussion_r970593224

Diff in built files:

diff --git i/build/createJestRunner.js w/build/createJestRunner.js
index f285e8e..2286138 100644
--- i/build/createJestRunner.js
+++ w/build/createJestRunner.js
@@ -7,8 +7,6 @@ exports.default = createRunner;
 var _jestWorker = require("jest-worker");
 var _pLimit = _interopRequireDefault(require("p-limit"));
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
-function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 function determineSlowTestResult(test, result) {
   // See: https://github.com/facebook/jest/blob/acd7c83c8365140f4ecf44a456ff7366ffa31fa2/packages/jest-runner/src/runTest.ts#L287
   if (result.perfStats.runtime / 1000 > test.context.config.slowTestThreshold) {
@@ -40,7 +38,7 @@ function createRunner(runPath, {
       return options.serial ? this._createInBandTestRun(tests, watcher, onStart, onResult, onFailure, options) : this._createParallelTestRun(tests, watcher, onStart, onResult, onFailure, options);
     }
     async _createInBandTestRun(tests, watcher, onStart, onResult, onFailure, options) {
-      const runner = (await (specifier => new Promise(r => r(`${specifier}`)).then(s => _interopRequireWildcard(require(s))))(runPath.toString())).default;
+      const runner = (await import(runPath.toString())).default;
       const mutex = (0, _pLimit.default)(1);
       return tests.reduce((promise, test) => mutex(() => promise.then(() => {
         if (watcher.isInterrupted()) {

SimenB avatar Sep 14 '22 10:09 SimenB

Another though. If we have const runner = (await import(runPath)).default, is the following still needed:

https://github.com/jest-community/create-jest-runner/blob/f474d84647a8a850b1f02ef80f4eecb96b3af703/lib/createJestRunner.ts#L103-L105

mrazauskas avatar Sep 14 '22 10:09 mrazauskas

Good catch 👍

SimenB avatar Sep 14 '22 10:09 SimenB

I'm wondering if we should wait with this. now it's require just like before. With import ESM is supported, but I don't think jest-worker supports ESM? As long as it doesn't it's sorta weird that it works in band in this module, but not with workers

SimenB avatar Sep 14 '22 10:09 SimenB

Makes sense. Probably this should wait for ESM support in jest-worker.

mrazauskas avatar Sep 14 '22 10:09 mrazauskas