workerloader-jest-transformer

raw JSON →
0.1.0 verified Sat Apr 25 auth: no javascript maintenance

A Jest transformer for Webpack worker-loader that enables testing Web Workers with Jest. This package transforms worker files (matched by regex) into mock workers that emulate the Worker API, allowing tests to run in Node.js without a browser environment. Inspired by jsdom-worker. Current version 0.1.0 is unstable and experimental; the project is seeking maintainers. Key differentiators: specifically designed for worker-loader, uses a lightweight mock with terminate/close semantics.

error Cannot find module 'workerloader-jest-transformer'
cause Package not installed or Jest transform path misspelled.
fix
npm install --save-dev workerloader-jest-transformer
error Jest encountered an unexpected token - This usually means that you are trying to import a file which Jest cannot parse
cause Worker file not matching the transform regex or transform not configured.
fix
Ensure transform regex in jest config matches your worker files, e.g., '^.+\\.worker.[t|j]sx?$'
breaking High experimental state: not stable, lacking tests, and may change API without notice.
fix Consider alternatives like jsdom-worker or manual worker mocking for production.
deprecated Package maintainers wanted; project may be abandoned if no maintainers step up.
fix Fork the repository or migrate to maintained alternatives.
gotcha Requires worker-loader in webpack config for the original code, but the transformer only works with Jest transform.
fix Ensure your webpack config also includes worker-loader for non-test builds.
npm install workerloader-jest-transformer
yarn add workerloader-jest-transformer
pnpm add workerloader-jest-transformer

Shows how to configure jest transform and test a web worker that doubles a number.

// jest.config.js
module.exports = {
  transform: {
    '^.+\\.worker.[t|j]sx?$': 'workerloader-jest-transformer'
  }
};

// src/example.worker.js
self.onmessage = function(e) {
  postMessage(e.data * 2);
};

// __tests__/example.test.js
const Worker = require('worker-loader!../src/example.worker.js');
test('worker doubles number', (done) => {
  const worker = new Worker();
  worker.onmessage = (e) => {
    expect(e.data).toBe(4);
    done();
  };
  worker.postMessage(2);
});