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
- Host: GitHub
- URL: https://github.com/plurid/runner
- Owner: plurid
- License: other
- Created: 2020-11-20T08:20:14.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-04-25T20:38:35.000Z (over 2 years ago)
- Last Synced: 2025-01-28T15:49:29.018Z (9 months ago)
- Topics: javascript, testing, typescript
- Language: TypeScript
- Homepage:
- Size: 1.74 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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 == trueor
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
[@plurid/runner-javascript][runner-javascript] • the `JavaScript`/`TypeScript` implementation
[runner-javascript]: https://github.com/plurid/runner/tree/master/packages/runner-javascript