This repository has been archived by the owner. It is now read-only.
Request driven library for testing node.js HTTP servers
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Greenkeeper badge

NPM version NPM downloads Build status Test coverage

Request driven library for testing node.js HTTP servers via request.

Note: This library is not heavily maintained. If you're looking for a functional request library with hte ability to mount servers during tests, consider trying Popsicle with the server plugin.


npm install retest --save-dev


You may pass a http.Server, function or string to retest() - if the server is not listening for connections it will be bound to an ephemeral port so there is no need to keep track of ports.

var retest  = require('retest');
var express = require('express');

var app = express();

app.get('/', function (req, res) {

retest(app).get('/user', function (err, res) {
  if (err) throw err;

A retest instance accepts the same arguments as request, including the options object.

Multipart Requests

A multipart request can be sent using the form-data module. Just use retest.form() to create an instance and pass it as the body option, as you would any other object.

var retest = require('retest');
var test   = retest(app);

var form = test.form();

// Append fields and files as you normally would.
form.append('username', 'blakeembrey');
form.append('password', 'hunter2');{
  uri: '/user',
  body: form
}, function (err, res) {
  // ...


The callback function is called with two arguments, the error and response. The response body will be automatically parsed when possible based on the content type (current application/json and application/x-www-form-urlencoded).


Create an instance that will reuse cookies between requests by calling retest.agent(app).