Skip to content
A testing framework
TypeScript JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
bin
src
tests
.babelrc
.gitignore
.travis.yml
ANATOMY.md
CNAME
DEVELOPMENT.md
LICENSE
MIDDLEWARE.md
README.md
RELEASE.md
WRITING_MIDDLEWARE.md
jest.config.js
package-lock.json
package.json
tsconfig.json

README.md

testframe

Build Status

A testing framework.

Features

Note

This is not a production ready project yet. Breaking changes should be expected.

Getting Started

Install

npm version

$ npm i -D @testingrequired/testframe@latest

Supported Node Versions

latest & lts

Executable

The framework doesn't provide an executable so you'll need to create one: ./bin/testframe.js

import { run } from "@testingrequired/testframe";

run();

Configure

This will do nothing so far. The framework makes zero assumptions about how you want it to behave. Unit testing, mocking, what your test syntax looks like. You will need to define that behavior using middleware in the executable:

import { run, config, middleware } from "@testingrequired/testframe";

const { starter, matchTestFiles, specSyntax } = middleware;

run(config(starter, matchTestFiles("./tests/**/*.spec.js"), specSyntax));

A config composes middleware to define that behavior. Here matchTestFiles defines how to find the test files while specSyntax defines how to read the them.

starter is an optional middleware that bundles some of the core middlewares to get you started: randomize test order, run tests, report results and more. Of course you can skip this and define exactly what middleware you wish to use.

Wire Test Script

{
  ...package,
  "scripts": {
    "test": "node -r esm ./bin/testframe.js"
  }
}

This example uses esm to support ES modules in your executable.

Write Tests

Create a test file: ./tests/example.spec.js

describe("increment value", () => {
  let value = 0;

  beforeEach(() => {
    value++;
  });

  it("should equal correct value", () => assert(value === 1));
});

Run Tests

$ npm test

Example Project

See a simple implementation: https://github.com/testingrequired/tf-example

Why

There are several great test frameworks out there (see: jest, mocha, jasmine) that will likely fit your needs. They will definitely fit your unit testing needs and their documentation/support is strong. They are also production ready. You're highly encouraged to use those if they work for you and the tests you're writing.

This framework is different in that it's not a unit testing framework. It tries not to make any assumptions about the tests you are writing. Instead you're choosing, building, mixing and matching behaviors that work for your tests. Unit, integration, end to end, API contract tests. Any test syntax, expose integrations through global variables in tests, report results.

These behaviors as defined as middleware functions. There are wide range of middleware included but it's easy write your own.

Next Steps

Middleware

Look through the growing list of available middleware to build the testing functionality your project needs.

More In Depth

The anatomy documentation explains how the framework is structured and how middleware works. This would be a good place to start if you want to write custom middleware.

Custom Middleware

Define the behavior required to run your tests by writing custom middleware.

Contributing

See development.

Built With

You can’t perform that action at this time.