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

@zoroaster/types

v1.0.0

Published

The types in context testing.

Readme

@zoroaster/types

npm version

@zoroaster/types is the types in context testing.

yarn add -D @zoroaster/types

Table Of Contents

API

The package can enable VSCode types highlighting by importing its types via the @typedef:

/**
 * @suppress {nonStandardJsDocs}
 * @typedef {import('@zoroaster/types').Test} _contextTesting.ContextConstructor
 * @typedef {import('@zoroaster/types').TestSuite} _contextTesting.TestSuite
 * @typedef {import('@zoroaster/types').ContextConstructor} _contextTesting.ContextConstructor
 * @typedef {import('@zoroaster/types').Context} _contextTesting.Context
 */

The types and externs for Google Closure Compiler via Depack are defined in the _contextTesting namespace.

Context

The context is the property on test suites which contains either an object, or Context Constructors -- classes used to create a new context for tests.

function(new: _contextTesting.Context) _contextTesting.ContextConstructor: The constructor class of a context.

_contextTesting.Context: The context made with a constructor.

| Name | Type | Description | | -------- | --------------------------------------- | ---------------------------------------------------------- | | _init | function(): (!Promise | void) | The function to initialise the context before each test. | | _destroy | function(): (!Promise | void) | The function to destroy the context after its test is run. |

Context Example

The context is used to put all service methods for test cases into a single class, and access them via tests' arguments.

import { join } from 'path'
import { debuglog } from 'util'

const LOG = debuglog('@zoroaster/types')

const FIXTURE = 'test/fixture'

/**
 * A testing context for the package.
 */
export default class Context {
  async _init() {
    LOG('init context')
  }
  /**
   * Example method.
   */
  example() {
    return 'OK'
  }
  /**
   * Path to the fixture file.
   */
  get FIXTURE() {
    return join(FIXTURE, 'test.txt')
  }
  async _destroy() {
    LOG('destroy context')
  }
}
import { equal, ok } from 'zoroaster/assert'
import Context from '../context'
import types from '../../src'

/** @type {Object.<string, (c: Context)>} */
const T = {
  context: Context,
  'is a function'() {
    equal(typeof types, 'function')
  },
  async 'calls package without error'() {
    await types()
  },
  async 'gets a link to the fixture'({ FIXTURE }) {
    const res = await types({
      text: FIXTURE,
    })
    ok(res, FIXTURE)
  },
}

export default T

Test Suite & Test

@Zoroaster/types package also provides interfaces for the test and test suite types. They are useful to establish communication between the @zoroaster/reducer library and zoroaster binary so that they both support the same properties and the compiler can check them correctly.

// zoroaster
/**
 * A test suite is a collection of tests with any number of contexts.
 * @implements {_contextTesting.TestSuite}
 */
export default class TestSuite {
  /* ... */
  /**
   * Whether test suite has focused tests.
   */
  get hasFocused(){
    // this.names is a nested collection of inner test and test suite names.
    return this.names.some(n => n.startsWith('!'))
  }
  get isFocused() {
    return this.name.startsWith('!')
  }
}
// @zoroaster/reducer
/**
 * Run all tests in sequence, one by one.
 * This also runs only selected tests, e.g., !test and !test suite
 * @param {!Array<!(_contextTesting.Test|_contextTesting.TestSuite)>} tests An array with tests.
 * @param {_contextTesting.ReducerConfig} config The options for the reducer.
 */
const reducer = async (tests, config) => {
  await tests.reduce(async (acc, test) => {
    const {
      name, isFocused, fn, hasFocused, // accessing the interface API
    } = test
    const isTest = !!fn
    if (allCanRun || isFocused || hasFocused) {
      /* ... */
    }
  }
}

_contextTesting.TestSuite: The test suite interface.

| Name | Type | Description | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | name* | string | The name of the test suite. | | isFocused* | boolean | If the test suite is focused. | | hasFocused* | boolean | Whether the test suite has focused tests. | | tests* | !Array<!(_contextTesting.Test | _contextTesting.TestSuite)> | Whether the test suite has focused tests. |

_contextTesting.Test: The test interface required for the reducer.

| Name | Type | Description | | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | | name* | string | The name of the test. | | fn* | function(..._contextTesting.Context): (!Promise | void) | The test function to run. | | isFocused* | boolean | If the name of the test has !. |

Copyright

(c) Context Testing 2019