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

fuzz-check

v0.1.3

Published

A thin wrapper for fast-check to make it easier to use

Readme

Fuzz-check

Thin wrapper for certain parts of the fast-check package. It currently only supports property tests.

Usage

npm i -D fuzz-check

In your test files:

import { fuzz, fc } from "fuzz-check";

describe("Your tests go here", () => {
  it("subtracts a number from itself", () => {
    fuzz(fc.integer())((n: number) => expect(n - n).toEqual(0));
  });
});

The fuzz function is a higher order function that takes a number of Arbitrary<T> parameters and returns a function that takes an assertion. If you're familiar with the fast-check API: the last argument goes in the second function, everything else goes in the first one.

The fc export is a pure re-export of fast-check. As such, you don't need it as a separate package if you're using this one.

Motivation

When looking for a property/fuzz testing package for JS, the fast-check package was the only one I found that looked decent, but I thought the API was a bit verbose, especially when using TypeScript. I wanted something that was easier to use.

// examples
const square = (n: number) => n * n;

// using the standard fc methods
it("runs a test the verbose way", () => {
  fc.assert(
    fc.property(fc.integer(), (n: number) => {
      expect(square(n)).toEqual(n * n);
    }),
  );
});

// using the fuzz wrapper
it("runs a test using `fuzz`", () => {
  fuzz(fc.integer())((n: number) => expect(square(n)).toEqual(n * n));
});

And if you want to make it even shorter, you can define the assertion outside of the function.

const expectSquare = (n: number) => expect(square(n)).toEqual(n * n);
it("accepts predefined assertions", () => {
  fuzz(fc.integer())(expectSquare);
});

By making fuzz a higher order function, we can even pre-apply generators and reuse them over multiple tests:

const natFuzz = fuzz(fc.nat());
it("makes it easier to generate fuzz tests", () => {
  natFuzz((n: number) => expect(n).toEqual(n));
});

it("lets you reuse the same setup for multiple tests", () => {
  natFuzz((n: number) => expect(n - n).toEqual(0));
});

Future goals?

Due to this being purely a function of me scratching my own itch, it will likely continue to gain features as I find more things that I can use. At the moment it covers my basic needs, but we'll see how it goes. Any suggestions and pull requests are of course welcome :)

Authors

Thomas Hartmann