An open API service indexing awesome lists of open source software.

https://github.com/plurid/runner

Test Runner with Preparation/Postparation Stages
https://github.com/plurid/runner

javascript testing typescript

Last synced: 8 months ago
JSON representation

Test Runner with Preparation/Postparation Stages

Awesome Lists containing this project

README

          








License: DEL


runner


Test Runner

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

Supported languages:

+ `JavaScript`
+ `TypeScript`

### Contents

+ [Usage](#usage)
+ [Packages](#packages)

## 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`)

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

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

const prepare: RunnerPrepare = 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 = async (
check,
prepared,
) => {
check('example · works', prepared.data, true);

return {
data: false,
};
}

const postpare: RunnerPostpare = 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

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

Running the example `runner` will log similar to the following

``` bash
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).

`check`s can be performed at any stage of the `runner`.

A `check` respects the following interface

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

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

## Packages


Version

[@plurid/runner-javascript][runner-javascript] • the `JavaScript`/`TypeScript` implementation

[runner-javascript]: https://github.com/plurid/runner/tree/master/packages/runner-javascript