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

@unional/fixture

v3.2.17

Published

Provides fixture to tests

Downloads

3,651

Readme

@unional/fixture

NPM version NPM downloads

GitHub NodeJS Codecov

Semantic Release

Visual Studio Code

Provides fixture for tests. You can use it for any test runner such as jest, ava, mocha, tap, etc.

Install

# npm
npm install -D @unional/fixture

# yarn
yarn add -D @unional/fixture

# pnpm
pnpm install -D @unional/fixture

# rush
rush add -p @unional/fixture --dev

Usage

baseline() is the heart of @unional/fixture. You can use it to read a folder containing multiple test cases and use them in your test runner.

import { baseline } from '@unional/fixture'

// basic usage
baseline('fixtures', ({ caseName, caseType, casePath, resultPath, match, copyToBaseline }) => {
  // `test()` comes from your favorite test runner.
  // e.g. `ava`, `jest`, `mocha`
  test(caseName, async () => {
    // this example assumes `caseType === 'file'`,
    // so the `casePath` points to the input file directly.
    fs.readFileSync(casePath, 'utf-8')

    // `resultPath` points to a folder where you can save your result(s)
    fs.writeFileSync(path.join(resultPath, 'output.txt', '<some data>'))

    // compare result and baseline folder
    await match()

    // match compares specific file in result folder and baseline folder
    await match('output.txt')

    // if you are happy with the change,
    // use this to copy the artifacts from result folder to baseline folder,
    // or you can do that manually from your IDE.
    await copyToBaseline('*.txt')
  })

  // advance usage
  baseline({
    basePath: 'fixtures',
    // default: 'cases'
    casesFolder: 'scenarios',
    // default: 'results'
    resultsFolder: 'actuals',
    // default: 'baselines'
    baselinesFolder: 'expects',
    // filter for specific cases
    // can use wildcards or RegExp
    filter: '*.pass',
    // By default warning messages will be displayed when some test cases are filtered.
    // Use this to suppress those warnings.
    suppressFilterWarnings: true,
    // If the file has more lines than this threshold,
    // then the file will be diff with line numbers,
    // and the unchanged lines will be trimmed off.
    largeFileThreshold: 100,
    // Controls how many unchanged lines will be shown around the changes.
    largeFileAmbientLines: 5,
    /**
     * Maximum number of diff lines to show.
     * If there are more diff lines,
     * the remaining will be timmed and show a summary instead.
     */
    diffDisplayThreshold: 150
  }, (context) => {
    ...
  })
})

Command Testing

In addition to baseline(), @unional/fixture provides execCommand() and writeCommandResult() to run command line test within the fixture.

If the test case is a JSON or YAML, it will read and execute the command within. If the test case is a folder, it will look for a command.json|yml|yaml in the folder and does the same.

More file types and features will be added in the future.

Here is a common way to use them:

import { baseline, execCommand, writeCommandResult } from '@unional/fixture'

baseline('fixtures/command', ({ caseType, caseName, casePath, resultPath, match }) => {
  it(caseName, async () => {
    writeCommandResult(
      resultPath,
      await execCommand({ caseType, caseName, casePath })
    )
    return match()
  })
})

The execCommand() has an alternative signature that allows you to easily run and capture stdout and stderr:

const { stdout, stderr } = await execCommand({ casePath, command, args })

Contribute

# right after fork
yarn

# begin making changes
git checkout -b <branch>
yarn watch

# edit `webpack.config.dev.js` to exclude dependencies for the global build.

# after making change(s)
git commit -m "<commit message>"
git push

# create PR

Commands

There are a few useful commands you can use during development.

# Run tests (and lint) automatically whenever you save a file.
yarn watch

# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)
yarn test

# Manually verify the project.
# This will be ran during 'npm preversion' so you normally don't need to run this yourself.
yarn verify

# Build the project.
# You normally don't need to do this.
yarn build

# Run tslint
# You normally don't need to do this as `yarn watch` and `npm version` will automatically run lint for you.
yarn lint