@stryker-mutator/vue-mutator

A plugin for VueJS projects using Stryker

Usage no npm install needed!

<script type="module">
  import strykerMutatorVueMutator from 'https://cdn.skypack.dev/@stryker-mutator/vue-mutator';
</script>

README

Mutation testing badge Build Status NPM Node version Slack Chat

Stryker

Stryker Vue mutator

A mutator that supports mutating *.vue code for Stryker, the mutation testing framework for JavaScript and friends.

This plugin cannot work on its own as it requires additional mutators to function.

Quickstart

First, install Stryker itself (you can follow the quickstart on the website)

Next, install this package:

npm install --save-dev @stryker-mutator/vue-mutator

Additionally: choose the mutator implementation for javascript, typescript or both.

npm install --save-dev @stryker-mutator/javascript-mutator
# AND / OR
npm install --save-dev @stryker-mutator/typescript

Now open up your stryker.conf.js file and add the following components:

mutator: 'vue',

Finally, give it a go:

$ stryker run

Additional required plugin

The Vue Mutator by itself cannot mutate code. Instead it can parse *.vue files and choose a backing mutator based on the script type (either typescript or javascript). This is why the Vue Mutator requires @stryker-mutator/javascript-mutator and/or @stryker-mutator/typescript to work. This way it supports mutating single-file components with a .vue extension as well as regular code in .js, .jsx, .ts and .tsx files.

If you write TypeScript code please install this package:

npm install --save-dev @stryker-mutator/typescript

If you write JavaScript code please install this package:

npm install --save-dev @stryker-mutator/javascript-mutator

These plugins need no additional configuration to work with the Vue Mutator. Please leave the config setting in your stryker.conf.js (or stryker.conf.json) file at mutator: 'vue',.

Peer dependencies

You should make sure you have the correct versions of this plugin's dependencies installed:

  • vue-template-compiler
  • @stryker-mutator/core

For the current versions, see the peerDependencies section in the package.json.

These are marked as peerDependencies so you get a warning during installation when the correct versions are not installed.

The vue-template-compiler module absolutely requires the same version as your Vue dependency itself, which is why it is a peerDependency instead of a dependency.