@stryker-mutator/core

The extendable JavaScript mutation testing framework

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@stryker-mutator/core
2,5291038.2.62 months ago5 years agoMinified + gzip package size for @stryker-mutator/core in KB

Readme

Mutation testing badge Build Status NPM Node version Slack Chat
StrykerJS
StrykerJS
Professor X: For someone who hates mutants... you certainly keep some strange company. William Stryker: Oh, they serve their purpose... as long as they can be controlled.

Introduction

For an introduction to mutation testing and StrykerJS features, see stryker-mutator.io.

Getting started

Please follow the quickstart on the website.
For small js projects, you can try the following command:
npm install --save-dev @stryker-mutator/core
# Only for small projects:
npx stryker run

It will run stryker with default values:
  • Uses npm test as your test command
  • Searches for files to mutate in the lib and src directories

Usage

$ npx stryker <command> [options] [configFile]

See usage on stryker-mutator.io

Supported mutators

See our website for the list of currently supported mutators.

Configuration

See configuration on stryker-mutator.io.

Programmatic use

Stryker can also be used programmatically from nodejs. It exports 2 classes for you to use: Stryker and StrykerCli.
import { Stryker, StrykerCli } from '@stryker-mutator/core';

Both classes can be used to run Stryker. The main difference is that Stryker is a slightly more low-level approach, while StrykerCli is the straight up CLI api.
In this example you can see how to use both.
async function main() {
  // Runs Stryker as if it was called directly from the cli. Not even returns a promise, it assumes to be allowed to call `process.exit`.
  new StrykerCli(process.argv /* RAW argv array */ ).run(); 

  // Runs Stryker, will not assume to be allowed to exit the process.
  const stryker = new Stryker({ concurrency: 4 } /* Partial Stryker options object */ );
  const mutantResults = await stryker.runMutationTest();
  // mutantResults or rejected with an error.
}

Stryker is written in TypeScript, so it is recommended to use Typescript as well to get the best developer experience.