# jsdom-worker **Repository Path**: mirrors_developit/jsdom-worker ## Basic Information - **Project Name**: jsdom-worker - **Description**: 👷‍♀️ Use Web Workers in Jest / JSDOM 🌈 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-08 - **Last Updated**: 2025-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

# jsdom-worker > _Lets you use Web Workers in Jest!_ This is an experimental implementation of the Web Worker API (specifically Dedicated Worker) for JSDOM. It does not currently do any real threading, rather it implements the `Worker` interface but all work is done in the current thread. `jsdom-worker` runs wherever JSDOM runs, and does not require Node. It supports both "inline" _(created via Blob)_ and standard _(loaded via URL)_ workers. > **Hot Take:** this module likely works in the browser, where it could act as a simple inline worker "poorlyfill". npm travis ## Why? Jest uses a JSDOM environment by default, which means it doesn't support Workers. This means it is impossible to test code that requires both NodeJS functionality _and_ Web Workers. `jsdom-worker` implements enough of the Worker spec that it is now possible to do so. ## Installation `npm i jsdom-worker` ## Example ```js import 'jsdom-global/register'; import 'jsdom-worker'; let code = `onmessage = e => postMessage(e.data*2)`; let worker = new Worker(URL.createObjectURL(new Blob([code]))); worker.onmessage = console.log; worker.postMessage(5); // 10 ``` ## Usage with Jest For single tests, simply add `import 'jsdom-worker'` to your module. Otherwise, add it via the [setupFiles](https://facebook.github.io/jest/docs/en/configuration.html#setupfiles-array) Jest config option: ```js { "setupFiles": [ "jsdom-worker" ] } ``` ## License [MIT License](https://oss.ninja/mit/developit)