Giter Site home page Giter Site logo

borp's Introduction

borp

Borp is a typescript-aware test runner for node:test. It also support code coverage via c8.

Borp is self-hosted, i.e. Borp runs its own tests.

Install

npm i borp --save-dev

Usage

borp --coverage

# with check coverage active
borp --coverage --check-coverage --lines 95

Borp will automatically run all tests files matching *.test.{js|ts}.

Example project setup

.
├── src
│   ├── lib
│   │   └── math.ts
│   └── test
│       └── math.test.ts
└── tsconfig.json

As an example, consider having a src/lib/math.ts file

export function math (x: number, y: number): number {
  return x + y
}

and a src/test/math.test.ts file:

import { test } from 'node:test'
import { math } from '../lib/math.js'
import { strictEqual } from 'node:assert'

test('math', () => {
  strictEqual(math(1, 2), 3)
})

and the following tsconfig.json:

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "compilerOptions": {
    "outDir": "dist",
    "sourceMap": true,
    "target": "ES2022",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "esModuleInterop": true,
    "strict": true,
    "resolveJsonModule": true,
    "removeComments": true,
    "newLine": "lf",
    "noUnusedLocals": true,
    "noFallthroughCasesInSwitch": true,
    "isolatedModules": true,
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true,
    "lib": [
      "ESNext"
    ],
    "incremental": true
  }
}

Note the use of incremental: true, which speed up compilation massively.

Options

  • --concurrency or -c, to set the number of concurrent tests. Defaults to the number of available CPUs minus one.
  • --coverage or -C, enables code coverage
  • --only or -o, only run node:test with the only option set
  • --watch or -w, re-run tests on changes
  • --timeout or -t, timeouts the tests after a given time; default is 30000 ms
  • --coverage-exclude or -X, a list of comma-separated patterns to exclude from the coverage report. All tests files are ignored by default.
  • --ignore or -i, ignore a glob pattern, and not look for tests there
  • --expose-gc, exposes the gc() function to tests
  • --pattern or -p, run tests matching the given glob pattern
  • --reporter or -r, set up a reporter, use a colon to set a file destination. Default: spec.
  • --no-typescript or -T, disable automatic TypeScript compilation if tsconfig.json is found.
  • --post-compile or -P, the path to a file that will be executed after each typescript compilation.
  • --check-coverage, enables c8 check coverage; default is false

Check coverage options

  • --lines, set the lines threshold when check coverage is active; default is 100
  • --functions, set the functions threshold when check coverage is active; default is 100
  • --statements, set the statements threshold when check coverage is active; default is 100
  • --branches, set the branches threshold when check coverage is active; default is 100

Reporters

Here are the available reporters:

  • gh: emits ::error workflow commands for GitHub Actions to show inlined errors. Enabled by default when running on GHA.
  • tap: outputs the test results in the TAP format.
  • spec: outputs the test results in a human-readable format.
  • dot: outputs the test results in a compact format, where each passing test is represented by a ., and each failing test is represented by a X.
  • junit: outputs test results in a jUnit XML format

License

MIT

borp's People

Contributors

aduh95 avatar anurag-roy avatar codershiba avatar dependabot[bot] avatar iamdoron avatar mcollina avatar molow avatar palaxx avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.