Skip to main content

Announcing Stryker 1.0

Β· 4 min read
Nico Jansen
Stryker Team

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.

  1. 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:

    First update them in your package.json file, next use npm install (or yarn install) to install the versions.

  2. 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

  3. Update your global stryker-cli

    If you've installed the stryker-cli, please update that one as well: npm i -g stryker-cli

  4. Upgrade your dependencies

    Update your package.json file.

    • stryker ➑ @stryker-mutator/core
    • stryker-api ➑ none, this can be removed
    • stryker-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 (or yarn install) once more.

  5. 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.