proxyjestjscreate-react-appjsdom

create-react-app: use a proxy for Jest tests


I want to use an actual API for my react Jest tests. Because the test environment is JSDom, I can't make cross-origin requests. In development this is easily solved by specifying a proxy in the package.json file, however this does not apply to the test suite run through: npm test.

I know that it is possible to specify a proxy when creating a new JSDom instance using (see docs):

const resourceLoader = new jsdom.ResourceLoader({
  proxy: "http://127.0.0.1:9001",
});

Now I can't find a way to use this with my application, which is created using create-react-app (CRA)... So my question is, is there some way to specify a proxy when running Jest through a CRA app?

Thanks!


Solution

  • I just found out how to do this. There is a Jest configuration option that sets the url of the JSDom instance: "testURL". However, it won't work when specifying it in package.json like:

    jest: {
        "testURL": "http://localhost:4000"
    }
    

    What does work is specifying the option directly in the NPM script. This would make the NPM test script look like:

    "test": "react-scripts test --testURL=http://localhost:4000"
    

    Hope it helps someone with the same issue