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

@plurid/runner

v0.0.0-9

Published

Test Runner with Preparation/Postparation Stages

Downloads

21

Readme

runner is intended to run programmatic tests with complete preparation and postparation stages.

Supported languages:

  • JavaScript
  • TypeScript

Contents

Usage

Install runner

npm install --save-dev @plurid/runner

or

yarn add -D @plurid/runner

write a test runner using TypeScript or JavaScript, adding .run, .test, or .runner before the file extension (e.g. example.run.ts)

import runner, {
    RunnerPrepare,
    RunnerPostpare,
    RunnerRun,
} from '@plurid/runner';



interface Prepared {
    data: boolean;
}
interface Runned {
    data: boolean;
}


const prepare: RunnerPrepare<Prepared> = async (
    check,
) => {
    const value = Math.random();
    check('example · works', value, 0.5, '<');

    const data = value < 0.5;
    check('example · works', data, true);

    return {
        data,
    };
}

const run: RunnerRun<Prepared, Runned> = async (
    check,
    prepared,
) => {
    check('example · works', prepared.data, true);

    return {
        data: false,
    };
}

const postpare: RunnerPostpare<Prepared, Runned> = async (
    check,
    prepared,
    runned,
) => {
    check('example · works', prepared.data, true);
    const passed = check('example · works', runned.data, true);

    if (passed) {
        // passed action
    } else {
        // not passed action
    }
}


runner(
    prepare,
    run,
    postpare,
);

To execute the runners use the runner cli

runner /path/to/test/file/or/folder

Running the example runner will log similar to the following

prepare passed :: example · works :: 0.15412422456759045 < 0.5
prepare passed :: example · works :: true == true
run passed :: example · works :: true == true
postpare passed :: example · works :: true == true
postpare failed :: example · works :: false not == true

or

prepare failed :: example · works :: 0.7123851592649375 not < 0.5
prepare failed :: example · works :: false not == true
run failed :: example · works :: false not == true
postpare failed :: example · works :: false not == true
postpare failed :: example · works :: false not == true

The prepare and postpare are meant for setting up and tearing down the environment in which the run will execute.

The results of prepare are passed to run, and the results of prepare and run are passed to postpare.

Usually, prepare and postpare imply priviledged executions (such as writing/deleting directly from the database, direct manipulation of the file system, anything required to ensure the run is set to pass).

checks can be performed at any stage of the runner.

A check respects the following interface

export type Check = (
    message: string,
    testValue: any,
    expectedValue: any,
    relationship?: CheckRelationship,
) => void;

export type CheckRelationship =
    | '==' | '<' | '<=' | '>' | '>=';

Packages

@plurid/runner-javascript • the JavaScript/TypeScript implementation