Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/salieri/snapsnap
HTTP Snapshotting Extension for Jest
https://github.com/salieri/snapsnap
Last synced: 6 days ago
JSON representation
HTTP Snapshotting Extension for Jest
- Host: GitHub
- URL: https://github.com/salieri/snapsnap
- Owner: salieri
- Created: 2020-01-04T13:55:39.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-08T20:28:11.000Z (almost 2 years ago)
- Last Synced: 2024-10-13T06:58:38.081Z (about 1 month ago)
- Language: TypeScript
- Size: 388 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Snapsnap
Capture, cache, and replay HTTP queries in your tests using [Nock](https://github.com/nock/nock).
[![Coverage Status](https://coveralls.io/repos/github/salieri/snapsnap/badge.svg?branch=master)](https://coveralls.io/github/salieri/snapsnap?branch=master)
[![Codecov](https://codecov.io/gh/salieri/snapsnap/branch/master/graph/badge.svg)](https://codecov.io/gh/salieri/snapsnap)
[![Codacy](https://api.codacy.com/project/badge/Grade/8dd26d6a15764bb3a1c0b6c244c28218)](https://www.codacy.com/app/salieri/snapsnap?utm_source=github.com&utm_medium=referral&utm_content=salieri/snapsnap&utm_campaign=Badge_Grade)
[![Maintainability](https://api.codeclimate.com/v1/badges/03f89b0f947a52e6c5d2/maintainability)](https://codeclimate.com/github/salieri/snapsnap/maintainability)1. On the first run, the tests make real HTTP queries.
2. The queries and the responses are stored in `__http__/`.
3. On subsequent runs, cached responses are loaded from `__http__/` and used instead of real queries.
4. This is super helpful if your tests run in an environment that has no internet access, or you wish to maintain a snapshot of the responses.## Usage
Snapsnap behaves similarly to Jest Snapshots. If an HTTP query has not been snapshotted, a real HTTP query will be made. Otherwise, a cached version of the query will be returned.
To signal that a test should be snapshotted, simply use `it.snap()` instead of `it()`. The framework will manage the rest.
```js
it.snap(
'should query the API',
async () => {
const result = await request('https://postman-echo.com/get?foo1=bar1&foo2=bar2');
const json = await result.json();
expect(json).toMatchSnapshot();
}
);
```## Setting Up
### Jest
Supports Jest with [Circus](https://www.npmjs.com/package/jest-circus) (=default) test runner.#### Configuring Jest
Snapsnap is implemented as a [test environment](https://jestjs.io/docs/configuration#testenvironment-string) that extends Jest's built-in `NodeEnvironment`.```js
// ./jest.config.js
module.exports = {
testEnvironment: 'snapsnap/jest-env.js'
};
```## Acknowledgments
Based on [Jest Nock Back](https://github.com/jonjaques/jest-nock-back) and [Jest Nock](https://github.com/spring-media/jest-nock).