# 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".
## 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)