https://github.com/kamiazya/jest-dynamic
An extension to dynamically switch the Jest test suite according to the environment (such as platform).
https://github.com/kamiazya/jest-dynamic
jest nodejs testing testing-library typescript-library
Last synced: about 1 year ago
JSON representation
An extension to dynamically switch the Jest test suite according to the environment (such as platform).
- Host: GitHub
- URL: https://github.com/kamiazya/jest-dynamic
- Owner: kamiazya
- License: mit
- Created: 2020-01-13T06:24:32.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T05:10:52.000Z (over 3 years ago)
- Last Synced: 2025-03-16T10:36:09.334Z (over 1 year ago)
- Topics: jest, nodejs, testing, testing-library, typescript-library
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@kamiazya/jest-dynamic
- Size: 357 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/kamiazya/ts-graphviz/actions?workflow=NodeCI) [](https://github.com/facebook/jest) [](https://opensource.org/licenses/MIT) [](https://github.com/prettier/prettier) [](https://codeclimate.com/github/kamiazya/jest-dynamic/test_coverage) [](#contributors-) [](http://makeapullrequest.com)
# @kamiazya/jest-dynamic
An extension to dynamically switch the [Jest](https://jestjs.io/) test suite according to the environment (such as platform).
## Objectives
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.
## Installation
This jest plugin can then be installed using [npm](https://www.npmjs.com/):
[](https://nodei.co/npm/@kamiazya/jest-dynamic/)
```bash
# yarn
yarn add -D @kamiazya/jest-dynamic
# or npm
npm install --save-dev @kamiazya/jest-dynamic
```
## API
### Importing
```typescript
import { onlyIf, onlyOn, skipIf, skipOn } from '@kamiazya/jest-dynamic';
```
### Skip
### `skipOn(...platforms: NodeJS.Platform)`
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);
});
});
```
### `skipIf(condition: boolean | (() => boolean))`
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);
});
```
### Only
### `onlyOn(...platforms: NodeJS.Platform)`
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);
});
});
```
### `onlyIf(condition: boolean | (() => boolean))`
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);
});
});
```
### Advanced Usage
**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);
});
});
```
## Contributors
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind welcome!
## License
This software is released under the MIT License, see LICENSE.