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.
Common errors
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?$'
Warnings
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.
Install
npm install workerloader-jest-transformer yarn add workerloader-jest-transformer pnpm add workerloader-jest-transformer Imports
- workerloader-jest-transformer wrong
const transformer = require('workerloader-jest-transformer'); // not used directlycorrect/* No import; configure in jest config */
Quickstart
// 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);
});