Announcing Stryker 1.0
Stryker 1.0 is here! This is an important milestone for mutation testing in JavaScript and TypeScript.
If youβre unfamiliar with Stryker and mutation testing, now is the perfect time to try it out! We've updated our quickstart, so go ahead and start using Stryker today. Stryker can help you to improve your test quality by inserting bugs in your code and validating that your tests can find them. The output is a comprehensive report telling you exactly what your unit tests missed.
What's newβ
Here you find a list of all the new features in Stryker 1.0 (alphabetical order):
Nothing to see here
That's right! We chose to not introduce new features. Instead, we've removed all deprecated functionality. Also, we've renamed all packages to be part of the @stryker-mutator organization on NPM.
Migrating from Stryker 0.xβ
Please use this migration guide to update your older Stryker version. If you're feeling adventurous π€ π, you can skip to step 3.
-
Make sure you're on the latest version of 0.x
Please make sure you're on the latest 0.x version first. Here is a list of all the latest versions:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
@stryker-mutator/[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
First update them in your package.json file, next use
npm install
(oryarn install
) to install the versions. -
Fix all deprecation warnings
If you're on the latest 0.x release, run
npx stryker run
and fix any deprecation warnings that are logged. If Stryker runs without deprecation warnings, you're ready to upgrade -
Update your global stryker-cli
If you've installed the
stryker-cli
, please update that one as well:npm i -g stryker-cli
-
Upgrade your dependencies
Update your package.json file.
stryker
β‘@stryker-mutator/core
stryker-api
β‘ none, this can be removedstryker-babel-transpiler
β‘@stryker-mutator/babel-transpiler
grunt-stryker
β‘@stryker-mutator/grunt-stryker
stryker-html-reporter
β‘@stryker-mutator/html-reporter
stryker-jasmine
β‘@stryker-mutator/jasmine-framework
stryker-jasmine-runner
β‘@stryker-mutator/jasmine-runner
stryker-javascript-mutator
β‘@stryker-mutator/javascript-mutator
stryker-jest-runner
β‘@stryker-mutator/jest-runner
stryker-karma-runner
β‘@stryker-mutator/karma-runner
stryker-mocha-framework
β‘@stryker-mutator/mocha-framework
stryker-mocha-runner
β‘@stryker-mutator/mocha-runner
stryker-mutator-specification
β‘@stryker-mutator/mutator-specification
stryker-test-helpers
β‘@stryker-mutator/test-helpers
stryker-typescript
β‘@stryker-mutator/typescript
stryker-util
β‘@stryker-mutator/util
stryker-vue-mutator
β‘@stryker-mutator/vue-mutator
stryker-wct-runner
β‘@stryker-mutator/wct-runner
stryker-webpack-transpiler
β‘@stryker-mutator/webpack-transpiler
The versioning of these dependencies start at 1.0.0, so feel free to use
^1.0.0
to specify the version.After updating your package.json, you'll need to run
npm install
(oryarn install
) once more. -
Take it for a spin
Stryker should now work as expected. Try it out with:
npx stryker run
.
Release cycleβ
From now on we'll adhere to strict semantic versioning, or semver for short. This means that it's easy to distinguish between bug fixes, new features or breaking changes just by looking at the version number.
Futhermore, we've decided to use fixed versioning for our packages, meaning that all @stryker-mutator/*
packages
will have the same version number. For example, if your local @stryker-mutator/core
version is 1.0.0
, your
@stryker-mutator/html-reporter
should also be at that exact version. This makes maintaining your Stryker dependencies a breeze.
This is comparable to how Angular or React do their versioning.
Release scheduleβ
We'll be releasing about as often as we were doing. The key difference is that we'll be extra focused on semver. Since we will be dropping support for old NodeJS versions as soon as it reaches end-of-life, expect at least one major release a year, (however, we might do more major releases). So you can expect a v2 release around April 30th, since we'll be dropping Node.JS 6 support at that time (the best birthday gift for me each year π)
We'll also keep a healthy deprecation policy, making sure that deprecated features remain in tact for at least one major release.