jsdomでImage.prototype.onloadを動かす


jest環境などでjsdomを使っていると、Image.prototype.srcbase64な画像を食わせたときにImage.prototype.onloadが発火されずテストがTimeoutしてしまう。

https://github.com/jsdom/jsdom/issues/1816#issuecomment-376014933

結果としてこの対応がうまくいった。

canvasパッケージを追加して、

yarn add -D canvas

jest.config.jsに設定追加。

module.exports = {
  ...etc,
  testEnvironmentOptions: { resources: 'usable' },
}

関連しそうなパッケージのバージョンスナップショット。

{
  "babel-jest": "^26.2.2",
  "canvas": "^2.6.1",
  "jest": "^26.2.2",
  "jsdom": "^16.4.0",
  "ts-jest": "^26.1.4",
  "typescript": "^4.1.2"
}