npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

stresst

v1.2.16

Published

A lightweight yet powerful functionnal test tool for REST APIs and more

Downloads

31

Readme

stresst

A lightweight yet powerful functionnal test tool for REST APIs and more

Get started

Ultra quick start

npm install stresst

Write a minimalist test suite like below in a file named suite.js

var test = require("stresst");

exports.suite = {
  base_uri: "https://api.mousses.org/v1",
  tests: [{
    method: "GET",
    uri: "/answers/meaningOfLife",
    asserts: [ {test: test.if.httpStatusIs(200)} ]
  }]
}

run the following command

node stresst suite.js

Stresst needs at least one test suite file to run tests.

Test suite

A test suite is a module that returns a plain object containing one or severals tests, themselfs containings one or several assertions. The suite POJO has the following structure:

  • baseUri string Base Url of the API to test
  • tests array An array of tests
  • [name] string A fancy name to display
  • [prepare] function A function to be executed before running tests
  • [clean] function A function to be executed after running tests

Test

Note Some of the properties below accepts a function as value, when so, the function will be executed a the time of the test, and it's return will be used as real value of the property. This is particullary handy when injecting data from previous response

  • uri string||function Endpoint URI, relative to baseUri
  • method string HTTP method to use (GET, POST, etc.)
  • asserts array An array of assertions to test against the HTTP response
  • [title] string A fancy string to name your test
  • [body] object||string||function content of HTTP request body ** POJO will be transformed in an HTTP key/value pair liste like would do an HTML form ** String will be send as is. So you should use JSON.stringify() to send a full JSON object without any property name
  • [multipart] string||function TODO: Document upload
  • [headers] object||function key/value pair of headers
  • [store] array An array of storage instruction
  • [waitBefore] int Wait an arbitrary amout of time before executing the test delay in seconds
  • [waitAfter] int Wait an arbitrary amout of time after executing the test delay in seconds

Assertion

  • test assertion function
  • [name] string What is your test about. a default string should be generated by assertion function if you don't provide one

Storage instruction

  • src Path of source the data in the response object
  • dest NAme of the key to use to store the data in the local storage

Here is a more elaborate exemple of a test suite file:


// Include the lib
var test = require("stresst");

// Export as `suite`
exports.suite = {

  base_uri: "https://api.mousses.org/v1",
  name: "My test suite",
  tests: [
  {
    title: "My first test",
    method: "GET",
    uri: "/answers/meaningOfLife",

    asserts: [
      {test: test.if.httpStatusIs(200)},
      {test: test.if.isJSON()},
      {
        name: "Response has a key named value", 
        test: test.if.hasKey("value")
      },
      {
        name: "Value is a number", 
        test: test.if.isOfType('value', 'number')
      },
      {
        name: "Value is 42", 
        test: test.if.isEqual('value', 42)
      }
    ]
  }
}

Testing nested properies

Stresst can test deep properties of the received data, via a simple dot syntax. Considering the following JSON response:

{
  "status": "ok"
  "items":[
    {
      "id": 1,
      "value": "foo"
    },
    {
      "id": 2,
      "value": "bar"
    }
  ]
}

one can test the content of response.items[1].value with

test.if.isEqual("items.0.value", "foo") // true
test.if.isEqual("items.1.id", 2) // true

Storing and reusing response data

You can store data from received response and re use it allong with others tests or assertions

Storing data

The instruction to store some data happens at the test level, with the store property. The saved data is later available with the getData() method of the stresst object.

To use stored data to build a property value of a test, you need to generate this value inside of a closure, which will be automatically evaluated at the time of running the test. Using getData() directly for a property declaration will fail as the data has not been fetched at the time of parsing the test suite.

Example

var test = require("stresst");

exports.suite = {
  base_uri: "https://api.mousses.org/v1",
  tests: [{
    method: "GET",
    uri: "/answers",
    store: [
    {
      src: "0.id",
      dest: "answer_id"
    }
    ],
    asserts: [ {test: test.if.httpStatusIs(200)} ]
  },
  {
    method: "GET",
    uri: function(){ 
      return "/answers/"+ test.getData("answer_id")
    },
    asserts: []
  }
  ]
}
Advanced data storage

You may want to store data from something else than the response body, for example from the response headers or to transform the data before storing it.

For those cases, you need to delare a function as value of the src key of the store object. The function receives the response as parameter.

Example


store: {
  dest: "foo",
  src: function(response){
    var data = JSON.parse(response.body);
    return data.someProperty.toLowerCase() + response.headers["X-Why-Would-You-Do-that"];
  }
}

Instalation

npm install tresst

...or git clone this repo

Assertions

For now tresst does not support / rely on an external assertions library, but rather include its own.

httpStatusIs

Checks status code

  • @param int expected A HTTP status code

isJSON

isEqual

Checks a given key path value against an expectation

  • path string String representation of how you would acces the property eg: myobject.property.sub_property
  • expected mixed Excpected value

isNotEqual

Checks a given key path value is NOT equal to an (un)expectation

  • path string String representation of how you would acces the property eg: myobject.property.sub_property
  • unexpected Mixed Unexpected value or value excpected to not be present

hasKey

Checks if response JSON contains the given key path (even if the value is null or false)

  • path string String representation of how you would acces the property

isOfType

Checks if given path is of expected type

  • path string String representation of how you would acces the property
  • type string Name of the excepted type

arrayLengthIs

Checks array length...

  • path string String representation of how you would acces the property
  • length int Excepcted length

arrayHasValue

Checks if an array at path contains execpted value

  • path string String representation of how you would acces the property
  • expected mixed Excpected value

arrayDontHaveValue

Checks if an array at path does NOT contain (un)execpted value

  • path string String representation of how you would acces the property
  • expected mixed Unexcpected value