1.6.17 • Published 1 year ago

@scaleleap/jest-polly v1.6.17

Weekly downloads
1,222
License
MIT
Repository
github
Last release
1 year ago

@scaleleap/jest-polly

logo

Smoothest Jest integration with PollyJS.


Integrate Jest with PollyJS for a smooth HTTP recording and playback experience for your integration tests.

List of features

Environment Variables

Polly Mode

Can be set via POLLY_MODE environment variable.

Mode can be one of the following:

  • replay: Replay responses from recordings.
  • record: Force Polly to record all requests. This will overwrite recordings that already exist.
  • passthrough: Passes all requests through directly to the server without recording or replaying.

Default: replay

Usage:

POLLY_MODE=record npm t

Record if Missing

If a request's recording is not found, pass-through to the server and record the response.

Can be set via POLLY_RECORD_IF_MISSING environment variable.

Default: false if running in CI environment or true otherwise.

Usage:

POLLY_RECORD_IF_MISSING=true npm t

Secret Sanitization

Sometimes requests and/or responses may contain secret data, such as API keys, or oAuth tokens.

To automatically sanitize the recordings, you may add a list of secrets to the config to be replaced.

See "Change PollyJS default config" section for details.

// use a Record-style config, where keys are secrets,
// and values are what they will be replaced with
jestPollyConfigService.config = {
  secrets: {
    'somepassword': 'x',
    'my-api-key': 'x',
  }
}

// or simply use an array, and everything will be replaced with `x` by default:
jestPollyConfigService.config = {
  secrets: [process.env.MY_SECRET_VALYE]
}

Code Demo

Use in all tests

In your package.json

{
  "jest": {
    "setupFilesAfterEnv": ["@scaleleap/jest-polly"]
  }
}

Or in jest.config.js

module.exports = {
  setupFilesAfterEnv: ['@scaleleap/jest-polly'],
};

Use in a single test

In my.test.js

import '@scaleleap/jest-polly';
import fetch from 'node-fetch';

test('is ok', async () => {
  const response = await fetch('https://httpstat.us/200');
  expect(response.ok).toBe(true);
});

Using the Polly instance

Use the polly instance to change default behavior.

import { jestPollyContext } from '@scaleleap/jest-polly';
import fetch from 'node-fetch';

jestPollyContext
  .polly
  .server
  .any('https://httpstat.us/500')
  .intercept((req, res) => res.sendStatus(500));

test('is not ok', async () => {
  const response = await fetch('https://httpstat.us/500');
  expect(response.ok).not.toBe(true);
});

Change PollyJS default config

If you want to change the default config, use the following setter.

Note: the config will be merged with the default config, and not overwritten.

import { jestPollyConfigService } from '@scaleleap/jest-polly';

jestPollyConfigService.config = {
  matchRequestsBy: {
    order: false
  }
}

Download & Installation

npm i -D @scaleleap/jest-polly

Contributing

Keep it simple. Keep it minimal. Don't put every single feature just because you can.

Authors or Acknowledgments

License

This project is licensed under the MIT License

1.6.17

1 year ago

1.6.16

1 year ago

1.6.15

1 year ago

1.6.14

2 years ago

1.6.4

2 years ago

1.6.3

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.6.9

2 years ago

1.6.8

2 years ago

1.6.7

2 years ago

1.6.6

2 years ago

1.6.5

2 years ago

1.6.11

2 years ago

1.6.10

2 years ago

1.6.13

2 years ago

1.6.12

2 years ago

1.5.94

2 years ago

1.5.93

2 years ago

1.5.95

2 years ago

1.5.89

2 years ago

1.5.90

2 years ago

1.5.92

2 years ago

1.5.91

2 years ago

1.5.83

2 years ago

1.5.85

2 years ago

1.5.84

2 years ago

1.5.87

2 years ago

1.5.86

2 years ago

1.5.88

2 years ago

1.5.81

2 years ago

1.5.80

2 years ago

1.5.82

2 years ago

1.5.74

3 years ago

1.5.76

3 years ago

1.5.75

3 years ago

1.5.78

2 years ago

1.5.77

3 years ago

1.5.79

2 years ago

1.5.70

3 years ago

1.5.72

3 years ago

1.5.71

3 years ago

1.5.73

3 years ago

1.5.67

3 years ago

1.5.66

3 years ago

1.5.69

3 years ago

1.5.68

3 years ago

1.5.63

3 years ago

1.5.62

3 years ago

1.5.65

3 years ago

1.5.64

3 years ago

1.5.56

4 years ago

1.5.58

4 years ago

1.5.57

4 years ago

1.5.59

4 years ago

1.5.61

4 years ago

1.5.60

4 years ago

1.5.54

4 years ago

1.5.55

4 years ago

1.5.52

4 years ago

1.5.53

4 years ago

1.5.51

4 years ago

1.5.50

4 years ago

1.5.47

4 years ago

1.5.49

4 years ago

1.5.48

4 years ago

1.5.46

4 years ago

1.5.45

4 years ago

1.5.44

4 years ago

1.5.43

4 years ago

1.5.42

4 years ago

1.5.41

4 years ago

1.5.40

4 years ago

1.5.39

4 years ago

1.5.38

4 years ago

1.5.37

4 years ago

1.5.36

4 years ago

1.5.35

4 years ago

1.5.34

4 years ago

1.5.33

4 years ago

1.5.32

4 years ago

1.5.31

4 years ago

1.5.30

4 years ago

1.5.29

4 years ago

1.5.28

4 years ago

1.5.27

4 years ago

1.5.26

4 years ago

1.5.25

4 years ago

1.5.24

4 years ago

1.5.23

4 years ago

1.5.22

4 years ago

1.5.21

4 years ago

1.5.20

4 years ago

1.5.19

5 years ago

1.5.18

5 years ago

1.5.17

5 years ago

1.5.16

5 years ago

1.5.15

5 years ago

1.5.14

5 years ago

1.5.13

5 years ago

1.5.12

5 years ago

1.5.11

5 years ago

1.5.10

5 years ago

1.5.9

5 years ago

1.5.8

5 years ago

1.5.7

5 years ago

1.5.6

5 years ago

1.5.5

5 years ago

1.5.4

5 years ago

1.5.3

5 years ago

1.5.2

5 years ago

1.5.1

5 years ago

1.5.0

5 years ago

1.4.3

5 years ago

1.4.2

5 years ago

1.4.0

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.2.1

5 years ago

1.0.5

5 years ago

1.0.2

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago