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

@snaptopixel/testify

v0.5.8

Published

Easily test browser-ish Typescript projects with mocha

Downloads

1

Readme

testify

An opinionated configuration and tool for testing browser-based Typescript projects with Mocha.

💡 Builds upon many of the ideas from @tomazzaman's excellent article “How to get fast unit tests with(out) Webpack

What it does

Initializes and configures a testing environment with the following:

✨ Bonus features

  • 😏 No webpack
  • 🚀 Tracks test files and dependencies in watch mode and re-runs tests

Using it in your projects

Install with yarn or npm

yarn add @snaptopixel/testify

Configure with cosmiconfig

Testify can be configured via:

  • testify object in package.json
  • .testifyrc file in yaml or json format
  • testify.config.js file

Supported properties:

  • files - minimatch glob pattern for test files, ie: src/**/*.spec.ts
  • src - minimatch glob pattern for source files, ie: src/**/*.ts
  • require - array of file paths to include, useful for customizing the test environment
  • alias - map of path/file aliases for requiring files,ie: "@": "src"

Add run script(s) to package.json

"test": "testify"

Watch mode

Pass -w to run tests in watch mode

npm run test -- -w

Or add it as a package.json script

"test.watch": "testify -w"

Filtering tests

Tests can be filtered via regex when using the command line:

npm run test -- -f user

Coverage reporting

Install nyc and invoke it before testify. Check nyc's README for configuration options

"test": "nyc testify"

The test environment

chai describe it expect assert and sinon are available globally in tests and require files

Customizing the test environment

Required files will be executed in the node environment once jsdom mocha have been initialized.

This is useful if your scripts depend on global variables, for example:

// In required js/ts file
window.SomeGlobal = {
  someMethod: sinon.spy()
}

// In test file
describe('globals', () => {
  it('can access global', () => {
    window.SomeGlobal.someMethod('hey')
    expect(window.SomeGlobal.someMethod).calledWith('hey')
  })
})

You can also customize chai and others using the globals:

chai.use(require('chai-jquery'));

Type checking

Note that testify will not type check your files. For the sake of simplicity and speed ts-node runs in "transpile only" mode.

It's recommended to type check your project via tsc --noEmit as part of your ci and/or development process.