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

injest

v0.1.4

Published

Makes your Jest tests more digestible

Readme

Injest Build Status

Makes your Jest tests more digestible.

Installation

npm i jest injest --save-dev

Usage

Injest provides various helpers to write smaller and quickers tests for your application. Helpers come in two flavors: snapshots and tests.

Assertions

Assertions helps you test things against something within your tests, by default a Jest snapshot but you can usually provide an explicit result to test against as last argument:

import { assert, component, reducer, saga } from "injest/assertions";

test("my test", () => {
    // Testing something against a snapshot
    assert(someFunction(argument));

    // Testing something against a result
    assert(someFunction(argument), "foobar");

    // Testing a component against a snapshot
    component(<Icon />);

    // Testing a component more in depth
    const { tree, actual } = assert(<Icon />); // Assert initial output
    tree.props.onClick();
    assert(actual); // Trigger a prop and re-assert the output

    // Testing a reducer against a snapshot
    reducer(someReducer, stateBefore, { type: "SOME_ACTION" });

    // Testing a reducer against a result
    reducer(someReducer, stateBefore, { type: "SOME_ACTION" }, stateAfter);

    // Testing a saga against a snapshot
    saga(onLoggedIn({ id: 1 }));

    // Testing a saga against a result
    saga(onLoggedIn({ id: 1 }), [
        {
            action: call(::UserManager.login, 1),
            response: { ...dummyUser },
        },
        {
            action: put(isLoggedIn()),
        },
    ]);
});

Tests

Tests are the same functions but wrapped in a way that let your write tests in a smaller and cleaner manner. Underneath they call test with the provided description and then call the function above with the rest of the arguments.

import { assert, component, reducer, saga } from "injest/tests";

assert("can select something", getUser(state));
component("can be rendered", <Icon />);
reducer("can process some action", someReducer, stateBefore, {
    type: "SOME_ACTION",
});
saga("can log user in", onLoggedIn());

As reducers usually have a lot of tests and repeatedly passing the reducer could be cumbersome, a reducer test factory is provided:

import { reducerTestFactory } from "injest/tests";

const reducer = reducerTestFactory(myReducer);

reducer("can process foo", stateBefore, { type: "FOO" });
reducer("can process bar", stateBefore, { type: "BAR" });
reducer("can process multiple scenarios", assert => {
    assert(stateBefore, { type: "FOO" }, stateAfter);
    assert(stateBefore, { type: "BAR" });
});

Testing

npm test
npm run lint