cozy-client has different entry points for browser and node (the node version does not export React components).
It is implemented by using fields in package.json
:
browser
field is the entrypoint for browsersmain
field is for node
It causes an issue when writing tests that use React components from cozy-client (Provider
for example) since
Jest does not support the browser
field (contrary to webpack).
browser
option
in your package.json
or jest.config.js
:
"jest": {
+ "browser": true
}
There can be some problems since the browser
field can clash with other node detection mechanism in other libraries
(for example iconv-lite
, see this PR), an alternative is to use the moduleNameMapper
option to point Jest to the correct entrypoint only for cozy-client
.
"moduleNameMapper": {
"^cozy-client$": "cozy-client/dist/index"
}
This will force Jest to use the browser entry point.
See this page
for another alternative solution that overrides the jest resolver so that it supports the browser
field.