@kamiazya/jest-dynamic
Version:
An extension to dynamically switch the Jest test suite according to the environment (such as platform).
140 lines (97 loc) • 3.41 kB
Markdown
[](https://github.com/kamiazya/ts-graphviz/actions?workflow=NodeCI) [](https://opensource.org/licenses/MIT) [](https://github.com/prettier/prettier) [](https://codeclimate.com/github/kamiazya/jest-dynamic/test_coverage)
An extension to dynamically switch the [Jest](https://jestjs.io/) test suite according to the environment (such as platform).
When writing a platform-dependent test like [this issue](https://github.com/facebook/jest/issues/3652), it provides an option to flexibly change the test configuration.
This jest plugin can then be installed using [npm](https://www.npmjs.com/):
[](https://nodei.co/npm/@kamiazya/jest-dynamic/)
```bash
yarn add -D @kamiazya/jest-dynamic
npm install --save-dev @kamiazya/jest-dynamic
```
```typescript
import { onlyIf, onlyOn, skipIf, skipOn } from '@kamiazya/jest-dynamic';
```
Using `skipOn` will skip the test on the specified platform.
**Example**
```typescript
skipOn('darwin')
.describe('Tests not run on Mac', () => {
it('is sample test', () => {
expect(true).toBe(true);
});
});
```
Using `skipIf` will skip the test on condition.
**Example**
```typescript
skipIf(process.env.NODE_ENV === 'CI')
.describe('This run on local test', () => {
expect(true).toBe(true);
});
```
Use `onlyOn` to run one test of the block targeted for the specified platform.
**Example**
```typescript
onlyOn('darwin', 'linux')
.describe('Run on Mac or Linux', () => {
test('sample', () => {
expect(true).toBe(true);
});
});
onlyOn('win32')
.describe('Run on Windows', () => {
test('sample', () => {
expect(false).toBe(false);
});
});
```
Use `onlyIf` to run one test of the block targeted on condition.
**Example**
```typescript
describe('Tests', () => {
onlyIf(process.platform === 'win32')
.it('should be run on Windows', () => {
expect(false).toBe(false);
});
onlyIf(() => process.platform === 'linux')
.test('Run on Linux', () => {
expect(1).toBe(1);
});
});
```
**Example**
Conditions can also be set on variables to increase reusability.
```typescript
const onlyOnLinuxAndMac = onlyOn('linux', 'darwin');
const skipOnLinux = skipOn('linux');
const skipOnMac = skipOn('darwin');
onlyOnLinuxAndMac
.describe('Tests', () => {
skipOnLinux
.test('sample', () => {
expect(false).toBe(false);
});
skipOnMac
.test('sample', () => {
expect(false).toBe(false);
});
});
```
This software is released under the MIT License, see LICENSE.
[](https://github.com/kamiazya)
[](https://ko-fi.com/W7W5VDNO)