Programming
React
Snowpack で Jest v27 にアップデートする

Jest v27 にアップデートすると、 Jest 実行時にエラーが出る

Snowpack の Issue #3398 (opens in a new tab) で報告されている通り、
React 向け Jest config 内で参照している Jest バージョンが古いため、実行時エラーになってしまう

● Test suite failed to run
TypeError: Cannot destructure property 'config' of 'cacheKeyOptions' as it is undefined.
  at Object.getCacheKey (node_modules/babel-jest/build/index.js:217:14)

私が確認した環境では全てのテストで上記のエラーが出ていた

原因

  • npm で配信されている Snowpack の最新版は v3.8.8(2022-01-22現在)
  • Jest 利用時の config として推奨 (opens in a new tab)されている @snowpack/app-scripts-react は v2.0.1 が最新で、
    最終リリースは2021-03頃
  • 同一リポジトリで管理されている@snowpack/app-scripts-react (opens in a new tab)は v2.0.1 時点だと babel-jest v26.2.2 を参照している
  • その後、f77639b (opens in a new tab)のコミットで Jest v27 対応が行われているが、リリースが行われておらず npm が更新されない

暫定対応

問題のパッケージをアンインストール

  • @snowpack/app-scripts-react をアンインストール
  • Jest の config ファイルから require を削除して、transform など必要な箇所のみコピー
    • babelTransform.js fileTransform.js importMetaBabelPlugin.js の3ファイルをコピーした

必要なパッケージを個別にインストール

下記のパッケージが不足した状態になるので追加インストールする

  • babel-jest
  • babel-preset-react-app
  • @snowpack/plugin-dotenv

Jest v27 にアップデートする

  • @types/jest も合わせて v27 にアップデートする

動作確認

テストが成功することを確認する

npm test

Snowpack はもう開発してない?

2021年10月以降リリースも無く、コードもほとんど動いていない

snowpack_contributoers

今どんな状態なんだろうか・・・
CRAv5 + Vite が安定して動いているので鞍替えしようかな