jest-dot-http-files

0.0.26 • Public • Published

Jest transformer for .http files

Literature and references

About jest transformers

https://jestjs.io/docs/code-transformation

About HTTP Files

Usage

Install the npm package as dev dependency: jest-dot-http-files

It works by exporting a jest transformer. Here is a simplified way to use it:

// jest.config.js

export default {
  moduleFileExtensions: ['http'],
  testMatch: ['**/*.http'],
  transform: {
    '\\.http$': 'jest-dot-http-files/transformer'
  }
}

Deviations from the existing literature

Global variables

Variables starting with @@ are held in the global scope, meaning they are available to all requests.

Meta variables

Meta variables are defined in the request scope within comments, similarly to jsdoc.

The @title meta variable

Overrides the test title. This variable is optional.

# @title My meaningful test title.
GET http://foo/bar

The @name meta variable

Used to name a request. Named requests can be used in interpolations. This variable is optional.

# @name foo
GET http://foo/bar

Accessing the named request:

GET http://foo/{{foo.$.response.body.id}}

The @only meta variable

Meaning: runs only this request.

# @only
GET http://foo/bar

The @skip meta variable

Meaning: don't run this request.

# @skip
GET http://foo/bar

Functions

Functions are used within interpolations {{...}}.

The $guid function

Generates a random v4 UUID.

The $uuid function

Alias to $guid.

The $randomInt function

Generates a random integer number between min and max.

GET http://foo/{{$randomInt 10 20}}

The $datetime function

Generates a date/time string: {{$datetime <format> [offset unit]}}

Format:

  • rfc1123:
  • iso8601:
  • or a custom format, e.g: "dd-MM-yyyy"

Offset unit:

  • y = Year
  • M = Month
  • w = Week
  • d = Day
  • h = Hour
  • m = Minute
  • s = Second

Example:

# adds one year to current date
GET http://foo/{{$datetime iso8601 1 y}}

A note on "assertions"

Assertions are made using jest snapshots.

The @ignoreHeaders meta variable

A regex pattern string.

Use it to specify what headers (both request and response) to ignore for snapshot assertion. The "age" and "date" headers are always ignored.

# @ignoreHeaders ^(x-request-id|x-vendor-.*)
GET http://foo/bar

The @ignore meta variable

Use it to specify what json-paths to ignore for snapshot assertion. The json-path is related to the named-request's request/response.

This variable is accumulative and forms a list, meaning you can ignore more than one path per request.

# @ignore $.response.body.id
# @ignore $.response.body.completed
GET http://foo/bar

The @expect meta variable

Asserts a json-path against a constant. The json-path is related to the named-request's request/response.

This variable is accumulative and forms a list, meaning you can have many assertions.

# @expect $.response.status 200
# @expect $.response.statusText "OK"
GET http://foo/bar

The @status meta variable

Alias to @expect $.response.status <statusCode> and ( optionally ) @expect $.response.statusText "<statusText>"

# @status 200 "OK"
GET http://foo/bar

or the status code only

# @status 200
GET http://foo/bar

The @throws meta variable

# @throws
GET http://foo/bar

or with a regex pattern

# @throws .*error.*
GET http://foo/bar

Expects the request to throw an error.

This is helpful to test negative cases, for example:

# @titles Tests that the response is not 500
# @status 500
# @throws
GET http://foo/bar

See also

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
0.0.261latest

Version History

VersionDownloads (Last 7 Days)Published
0.0.261
0.0.250
0.0.240
0.0.230
0.0.220
0.0.210
0.0.200
0.0.190
0.0.180
0.0.170
0.0.160
0.0.150
0.0.140
0.0.130
0.0.120
0.0.110
0.0.100
0.0.90
0.0.80
0.0.70
0.0.60
0.0.50
0.0.40
0.0.30
0.0.20
0.0.10

Package Sidebar

Install

npm i jest-dot-http-files

Weekly Downloads

1

Version

0.0.26

License

MIT

Unpacked Size

86.4 kB

Total Files

18

Last publish

Collaborators

  • andreventuravale