Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## 5.0.2

### Patch Changes

- Updated dependencies:
- @systemfsoftware/stryker-js-plugin-interface@9.0.0

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## 9.0.0

### Major Changes

- `Report.Metrics#mutationScore` and `Report.Metrics#mutationScoreBasedOnCoveredCode` now return a `Report.MutationScore` instead of a number: `Scored` with a `percentage` between 0 and 100, or `Unscored` when no tested mutant counts toward the score. Previously an empty run produced `NaN`, which compared false against every threshold.

Code that read the score as a number must match on it:

```ts
// before
const failing = metrics.mutationScore < 80

// after
const failing = Report.MutationScore.match(metrics.mutationScore, {
Scored: ({ percentage }) => percentage < 80,
Unscored: () => false,
})
```

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## 6.0.2

### Patch Changes

- Updated dependencies:
- @systemfsoftware/stryker-js-plugin-interface@9.0.0

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## 7.1.2

### Patch Changes

- Mutants are now type-checked incrementally. Checking a mutant costs its own file and the files that import it — through a relative path, a path alias, or a re-export — instead of a full type check of every project the checker opens, so a run whose mutants all live in one file finishes instead of staying at zero completed mutants until the run is killed.

A mutation that breaks a file which imports the mutated file is still a `CompileError` rather than being handed to the test runner.

- Updated dependencies:
- @systemfsoftware/stryker-js-plugin-interface@9.0.0

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## 7.3.0

### Minor Changes

- The test runner accepts a new `pool` option. When it is `threads`, a Vitest config that enables browser mode for any project is refused at startup with a message naming `testRunner: 'vitest'`.

### Patch Changes

- A run whose selected files produce no mutants, for example because no loaded framework claims them, now runs every test in the dry run and finishes with an empty report. With `testRunner: 'vm'` or `'vitest'` it used to fail with "No tests were executed", because the dry run only looked for tests related to those files. The dry run now relates tests only to the files that carry mutants.

- A failed dry run now names every failing test. The runner used to apply the bail setting to the dry run as well, so Vitest stopped at the first failure and the error listed only that test. Mutant runs still stop at the first failing test unless `disableBail` is set.

- A test file that fails as a whole — a suite that registers no tests, a file that throws while loading, or a `beforeAll`/`afterAll` hook that fails — is now reported as a failing test carrying the file's own message. A mutant that breaks a file this way is reported as Killed instead of Surviving, and a dry run that loads such a file fails naming it.

Skipped tests that never start are now reported as skipped rather than dropped from the run's results.

A mutant run whose related files match no test file no longer stops with a test-runner crash; the run continues with no test able to kill the mutant.

- Mutation runs with `testRunner: 'vm'` finish in about half the time, with the same verdicts. The engine checks mutant groups on every checker process at once, stops the checkers as soon as checking ends, hands their share of `concurrency` to the test runners, and shares a Node compile cache with every worker it starts. The Vitest runner starts the next isolated worker thread while the current test file runs, so each file still gets a fresh thread but no longer waits for one to boot. On a 319-mutant TypeScript project with the TypeScript checker, a run went from 24.9 s to 12.6 s.
20 changes: 0 additions & 20 deletions .changeset/changelogs/@systemfsoftware!stryker-js@12.0.0.md

This file was deleted.

29 changes: 29 additions & 0 deletions .changeset/changelogs/@systemfsoftware!stryker-js@12.1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## 12.1.0

### Minor Changes

- A piped `stdout` now gets human output, exactly like a terminal. Machine consumers ask for the NDJSON event stream explicitly, with `--json` or `STRYKER_MODE=machine`; `--format text` names the human format, and passing it together with `--json` is a usage error (exit 2). Under `--json`, `stdout` carries wire records and nothing else, while progress status lines and log output stay on `stderr`.

Every run also writes those wire records to `reports/mutation-stream.jsonl` in human mode too, so a job that shows a readable log still produces the artifact `stryker merge-reports` rebuilds a shard's report from.

If a script or CI step read NDJSON from a piped run without requesting it, pass `--json` (or set `STRYKER_MODE=machine`) there.

Custom `RunEventDrain` implementations must accept a required `toStdout` argument in `drainFramed`; pass-throughs can ignore it.

### Patch Changes

- A run whose selected files produce no mutants, for example because no loaded framework claims them, now runs every test in the dry run and finishes with an empty report. With `testRunner: 'vm'` or `'vitest'` it used to fail with "No tests were executed", because the dry run only looked for tests related to those files. The dry run now relates tests only to the files that carry mutants.

- A run whose `mutate` patterns match no file now finishes successfully instead of stopping with an instrument error. It performs the dry run, writes a mutation report with no files, and passes regardless of `thresholds.break`, the same as upstream StrykerJS. A sharded run whose shard receives no file no longer fails.

`stryker merge-reports` shows `n/a` for a package whose report has no tested mutant, instead of a score of `0.00`.

Errors reported for the prepare, dry-run, and mutation-testing stages now carry their reason as the error message, so a printed cause no longer shows up as a bare error name.

- `stryker merge-reports` now rebuilds a package's partial report from the mutants recorded in its stream part when the run ended before writing its final report. Earlier versions recognized none of the recorded mutants and reported the package as having no report.

- Mutation runs with `testRunner: 'vm'` finish in about half the time, with the same verdicts. The engine checks mutant groups on every checker process at once, stops the checkers as soon as checking ends, hands their share of `concurrency` to the test runners, and shares a Node compile cache with every worker it starts. The Vitest runner starts the next isolated worker thread while the current test file runs, so each file still gets a fresh thread but no longer waits for one to boot. On a 319-mutant TypeScript project with the TypeScript checker, a run went from 24.9 s to 12.6 s.

- `testRunner: 'vm'` runs Vitest itself on Vitest's isolated `threads` pool instead of an in-process reimplementation, and stays the default `testRunner`. It reports the same test ids, outcomes and per-mutant verdicts as `testRunner: 'vitest'`, so a project whose Vitest config enables browser mode is refused at startup with a message naming `testRunner: 'vitest'`.

Stryker no longer discovers test files for `vm`: Vitest selects them from your config, as it does for `testRunner: 'vitest'`. A run that loads no test files fails the dry run naming `testFiles`.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## 4.1.1

### Patch Changes

- Updated dependencies:
- @systemfsoftware/stryker-js-plugin-interface@9.0.0
15 changes: 0 additions & 15 deletions .changeset/changelogs/@systemfsoftware!stryker-vm-harness@3.0.1.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/dry-run-failure-names-tests.md

This file was deleted.

25 changes: 25 additions & 0 deletions .changeset/ledger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,10 @@
- plugin-interface-codecs
- stryker-js-plugin-interface-bare-package-specifiers
- vm-runner-default-zero-config
"@systemfsoftware/stryker-js-plugin-interface@9.0.0":
dir: packages/stryker-js-plugin-interface
intents:
- mutation-score-union
"@systemfsoftware/stryker-js-plugin-runtime@5.0.0":
dir: packages/stryker-js-plugin-runtime
intents:
Expand Down Expand Up @@ -262,6 +266,10 @@
dir: packages/stryker-js-typescript-checker
intents:
- systemfsoftware-latest-packages
"@systemfsoftware/stryker-js-typescript-checker@7.1.2":
dir: packages/stryker-js-typescript-checker
intents:
- typescript-checker-checks-affected-files
"@systemfsoftware/stryker-js-vitest-runner@5.0.0":
dir: packages/stryker-js-vitest-runner
intents:
Expand Down Expand Up @@ -303,6 +311,14 @@
dir: packages/stryker-js-vitest-runner
intents:
- systemfsoftware-latest-packages
"@systemfsoftware/stryker-js-vitest-runner@7.3.0":
dir: packages/stryker-js-vitest-runner
intents:
- dry-run-without-mutants
- vitest-runner-dry-run-reports-every-failure
- vitest-runner-file-failures
- vitest-runner-pool-option
- vm-runner-mutation-wall-time
"@systemfsoftware/stryker-js@10.0.0":
dir: packages/stryker-js
intents:
Expand Down Expand Up @@ -356,6 +372,15 @@
- restore-config-authoring-helpers
- stryker-js-effect-required-peer
- systemfsoftware-latest-packages
"@systemfsoftware/stryker-js@12.1.0":
dir: packages/stryker-js
intents:
- dry-run-without-mutants
- empty-mutate-set-dry-run
- merge-reports-rebuilds-streamed-mutants
- piped-stdout-stays-human
- vm-runner-mutation-wall-time
- vm-runner-runs-vitest
"@systemfsoftware/stryker-js@5.0.0":
dir: packages/stryker-js
intents:
Expand Down
10 changes: 0 additions & 10 deletions .changeset/restore-config-authoring-helpers.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/stryker-js-effect-required-peer.md

This file was deleted.

13 changes: 0 additions & 13 deletions .changeset/systemfsoftware-latest-packages.md

This file was deleted.

2 changes: 1 addition & 1 deletion packages/stryker-js-html-reporter/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@systemfsoftware/stryker-js-html-reporter",
"version": "5.0.1",
"version": "5.0.2",
"repository": {
"type": "git",
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
Expand Down
2 changes: 1 addition & 1 deletion packages/stryker-js-plugin-interface/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@systemfsoftware/stryker-js-plugin-interface",
"version": "8.0.0",
"version": "9.0.0",
"repository": {
"type": "git",
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
Expand Down
2 changes: 1 addition & 1 deletion packages/stryker-js-plugin-runtime/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@systemfsoftware/stryker-js-plugin-runtime",
"version": "6.0.1",
"version": "6.0.2",
"repository": {
"type": "git",
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
Expand Down
2 changes: 1 addition & 1 deletion packages/stryker-js-typescript-checker/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@systemfsoftware/stryker-js-typescript-checker",
"version": "7.1.1",
"version": "7.1.2",
"repository": {
"type": "git",
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
Expand Down
2 changes: 1 addition & 1 deletion packages/stryker-js-vitest-runner/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@systemfsoftware/stryker-js-vitest-runner",
"version": "7.2.1",
"version": "7.3.0",
"repository": {
"type": "git",
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
Expand Down
2 changes: 1 addition & 1 deletion packages/stryker-js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@systemfsoftware/stryker-js",
"version": "12.0.0",
"version": "12.1.0",
"repository": {
"type": "git",
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
Expand Down
2 changes: 1 addition & 1 deletion packages/stryker-test-contribution/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@systemfsoftware/stryker-test-contribution",
"license": "Apache-2.0",
"version": "4.1.0",
"version": "4.1.1",
"author": "Ryan Lee <drdgvhbh@gmail.com>",
"repository": {
"type": "git",
Expand Down