先にまとめ

ここまでのあらすじ

4 年前のプロジェクトを開いて npx npm-check-updates -u でパッケージを更新、npm test したら落ちた。

解決方法

  • testEnvironment: 'jsdom' を設定
  • jest-environment-jsdom をインストール

エラー

The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.

ReferenceError: document is not defined

  11 |       { content },
  12 |     );
> 13 |     ReactDOM.render(component, document.body);
     |                                ^
  14 |
  15 |     elMarkdown = document.body.firstChild as HTMLDivElement;
  16 |   }

メッセージの URL ↓にある通り、この testEnvironment で JSDOM を指定する必要があるみたい。jest.config.js に追記する。

module.exports = {
  testEnvironment: 'jsdom',
…
};

実行したらまたエラーになった。

$ npm t

> @ginpei/[email protected] test
> jest

● Validation Error:

  Test environment jest-environment-jsdom cannot be found. Make sure the testEnvironment configuration option points to an existing node module.

  Configuration Documentation:
  https://jestjs.io/docs/configuration


As of Jest 28 "jest-environment-jsdom" is no longer shipped by default, make sure to install it separately.

言われた通り jest-environment-jsdom をインストールする。

$ npm i -D jest-environment-jsdom

これでちゃんと試験が動くようになった。めでたし、めでたし。