When I want to run my project with the command npm run test
, I get the error below. What is causing this?
FAIL
● Test suite failed to run
SecurityE
To solve the Jest SecurityError: localStorage
error you need to add the jest: { ... }
part to your package.json file
{
"name": "...",
"version": "..",
"main": "..",
"description": "...",
...
"jest": { "verbose": true, "testURL": "http://localhost/" },
}
I just had this cropping up in a large monorepo (in unit tests, that otherwise wouldn't have required jsdom). Explicitly setting the following in our jest.config.js
(or the package.json
equivalent) also alleviated that issue:
module.exports = {
testEnvironment: 'node'
}
Update: As Nicolas mentioned below (thanks!), you can also add the following flags if you're not using any config files:
jest --testEnvironment node
# or
jest --env=node
for me this was solved by upgrading to "jest": "^24.9.0",
You must specify what environment (--env
) are you going to use.
When you run jest
command in the package.json
you should specify the environment (jsdom
or node
). For example:
"scripts": {
"jest": "jest --env=node --colors --coverage test",
"test": "npm run jest"
},
This should work for you!
If you are using jsdom you have to change your setup for tests like this:
const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>', {
url: 'http://localhost/',
});```
The suggestion in the top-rated answer of adding testURL: "http://localhost"
to my Jest config didn't work for me. However, this suggestion from the jsdom GitHub discussion, of passing a URL in when creating the jsdom object, did.
const url = 'http://localhost';
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url });