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 🙏

© 2024 – Pkg Stats / Ryan Hefner

tdd-buffet

v4.0.0

Published

All you can eat TDD tools and libraries

Downloads

175

Readme

All you can eat TDD tools and libraries

Build Status codecov npm type definitions


Install

npm install tdd-buffet

Testing

This package exposes a wrapper over Jest that provides the same building blocks for writing tests (describe and it) and also provides the same CLI.

Create a Node test

Ideally you should have many of these since they're fast to run. They execute in a jsdom environment so you can test both your Node libraries and your React components. Since they're fast, you should use them to check your code's correctness and achieve satisfactory coverage.

import { describe, it } from 'tdd-buffet/suite/node';
import { expect } from 'tdd-buffet/suite/chai';

describe('Node suite', () => {
  it('should run a test', () => {
    expect(1).to.equal(1); 
  });
});

Create a GUI test

These tests will spin up Puppeteer in headless mode and pass the page instance in the test callback. The browser and page will be set up once per test suite and persisted between individual tests.

These tests are slower than Node tests. Therefore, you should not rely on them to exhaustively check the correctness of your code. You can start with them to have some basic coverage, but try to make your down to smaller, faster, more focused tests.

import { describe, it } from 'tdd-buffet/suite/gui';

describe('Gui suite', () => {
  it('should run a test', async (page) => {
    await page.goto('http://github.com');
  });
});

Assertions

You can choose between jest's builtin assertions or chai's assertions.

import { describe, it } from 'tdd-buffet/suite/node';
import { expect as chaiExpect } from 'tdd-buffet/expect/chai';
import { expect as jestExpect } from 'tdd-buffet/expect/jest';

describe('Expect', () => {
  describe('chai', () => {
    it('should compare things', () => {
      chaiExpect(1).to.equal(1);
      chaiExpect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
    });
  });

  describe('jest', () => {
    it('should compare things', () => {
      jestExpect(1).toEqual(1);
      jestExpect({ foo: 'bar' }).toEqual({ foo: 'bar' });
    });
  });
});

Run the tests

npx tdd-buffet test

This will run all the tests matched by the default Jest config. You can pass your own config through the --config option. The command accepts all Jest arguments:

npx tdd-buffet test --runInBand tests/my-test.spec.tsx

Coverage

You can pass the --coverage option to generate coverage with the options specified in the Jest config.

You can control how coverage is collected (output folder, thresholds etc.) through Jest's coverage options.