1 | [![Mutation testing badge](https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fstryker-mutator%2Fstryker%2Fmaster%3Fmodule%3Djavascript-mutator)](https://dashboard.stryker-mutator.io/reports/github.com/stryker-mutator/stryker/master?module=javascript-mutator)
|
2 | [![Build Status](https://github.com/stryker-mutator/stryker/workflows/CI/badge.svg)](https://github.com/stryker-mutator/stryker/actions?query=workflow%3ACI+branch%3Amaster)
|
3 | [![NPM](https://img.shields.io/npm/dm/@stryker-mutator/javascript-mutator.svg)](https://www.npmjs.com/package/@stryker-mutator/javascript-mutator)
|
4 | [![Node version](https://img.shields.io/node/v/@stryker-mutator/javascript-mutator.svg)](https://img.shields.io/node/v/@stryker-mutator/javascript-mutator.svg)
|
5 | [![Slack Chat](https://img.shields.io/badge/slack-chat-brightgreen.svg?logo=slack)](https://join.slack.com/t/stryker-mutator/shared_invite/enQtOTUyMTYyNTg1NDQ0LTU4ODNmZDlmN2I3MmEyMTVhYjZlYmJkOThlNTY3NTM1M2QxYmM5YTM3ODQxYmJjY2YyYzllM2RkMmM1NjNjZjM)
|
6 |
|
7 | ![Stryker](https://github.com/stryker-mutator/stryker/raw/master/stryker-80x80.png)
|
8 |
|
9 | # Stryker JavaScript mutator
|
10 |
|
11 | A mutator that supports JavaScript for [Stryker](https://stryker-mutator.io), the JavaScript Mutation testing framework. This plugin does not transpile any code. The code that the @stryker-mutator/javascript-mutator gets should be executable in your environment (i.e. the @stryker-mutator/javascript-mutator does not add support for Babel projects).
|
12 |
|
13 | ## Quickstart
|
14 |
|
15 | First, install Stryker itself (you can follow the [quickstart on the website](https://stryker-mutator.io/quickstart.html))
|
16 |
|
17 | Next, install this package:
|
18 |
|
19 | ```bash
|
20 | npm install --save-dev @stryker-mutator/javascript-mutator
|
21 | ```
|
22 |
|
23 | Now open up your `stryker.conf.js` (or `stryker.conf.json`) file and add the following components:
|
24 |
|
25 | ```javascript
|
26 | mutator: 'javascript',
|
27 | // OR
|
28 | mutator: {
|
29 | name: 'javascript',
|
30 | plugins: ['classProperties', 'optionalChaining'],
|
31 | excludedMutations: ['BooleanSubstitution', 'StringLiteral']
|
32 | }
|
33 | ```
|
34 |
|
35 | Now give it a go:
|
36 |
|
37 | ```bash
|
38 | $ stryker run
|
39 | ```
|
40 |
|
41 | ## Configuration
|
42 |
|
43 | ### `mutator.name` [`string`]
|
44 |
|
45 | The name of the mutator, use `'javascript'` to enable this mutator.
|
46 |
|
47 | ### `mutator.plugins` [`(string | ParserPluginWithOptions)[]`]
|
48 |
|
49 | Default: `['asyncGenerators', 'bigInt', 'classProperties', 'dynamicImport', 'flow', 'jsx', 'objectRestSpread', ['decorators', { decoratorsBeforeExport: true }]`
|
50 |
|
51 | Configure custom [Babel Syntax plugins](https://babeljs.io/docs/en/babel-parser#plugins). Syntax plugins allow you to parse different pieces of syntax.
|
52 | By default a number of plugins are configured. We might add more in the future. For example: you can configure your own Syntax plugins here to allow for [stage 1](https://github.com/tc39/proposals/blob/master/stage-1-proposals.md) features.
|
53 |
|
54 | ### `mutator.excludedMutations` [`string[]`]
|
55 |
|
56 | See [Stryker core's readme](https://github.com/stryker-mutator/stryker/tree/master/packages/core#mutator)
|
57 |
|
58 | ## Mutators
|
59 |
|
60 | The `JavaScript Mutator` is a plugin to mutate JavaScript code. This is done using Babel without any plugins.
|
61 |
|
62 | See [test code](https://github.com/stryker-mutator/stryker/tree/master/packages/javascript-mutator/test/unit/mutators) to know which mutations are supported.
|