Skip to content

jest-preset

Build npm version

A Jest preset with support for React Native platform-specific extensions and TypeScript.

In a TypeScript-only Package (Non-React Native)

Section titled “In a TypeScript-only Package (Non-React Native)”

Add preset: "@rnx-kit/jest-preset" to your Jest config:

module.exports = {
preset: "@rnx-kit/jest-preset",
...
};

@rnx-kit/jest-preset will detect that you’re not targeting React Native and exclude any React Native specific configurations.

There are three ways to use this preset when targeting React Native, depending on your personal preference.

If you prefer to use a single Jest config, you can provide the target platform via an environment variable. First, add preset: "@rnx-kit/jest-preset" to your Jest config:

module.exports = {
preset: "@rnx-kit/jest-preset",
...
};

Then specify the target platform when running Jest:

Terminal window
RN_TARGET_PLATFORM=ios npm run jest

Alternatively, you can have a Jest config file for each platform, e.g.:

jest.config.ios.js
module.exports = require("@rnx-kit/jest-preset")("ios", {
...
});

Then specify the config file to use when running Jest:

Terminal window
npm run jest --config jest.config.ios.js

You can specify the target platform using the rnx-test command provided by @rnx-kit/cli. First, add preset: "@rnx-kit/jest-preset" to your Jest config:

module.exports = {
preset: "@rnx-kit/jest-preset",
...
};

Then specify the target platform when running rnx-test:

Terminal window
npm run react-native rnx-test --platform ios

Add preset: "@rnx-kit/jest-preset" to your Jest config:

module.exports = {
preset: "@rnx-kit/jest-preset",
...
};

The target platform will be deduced by reading react-native.config.js at the package root.