kenjuの日記

About Programming, Mathematics and Security

OSS: EnzymeのJSDOMドキュメントのバージョンアップデート

自分の出したPR備忘録。今回は、Enzymeのドキュメントが、最新のJSDOMバージョンに対応していなかったので、修正した。

github.com

解決した課題

ドキュメントのJSDOMのバージョンが古く、最新のJSDOMのバージョンでは動かなかった

ポイント

  • copyPropsで、JSDOMライブラリの提供する擬似DOM環境から、必要なPropsをコピーしている。
  • JSDOMのExportしているAPIに変更があった
/* setup.js */

const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
const { window } = jsdom;

function copyProps(src, target) {
  const props = Object.getOwnPropertyNames(src)
    .filter(prop => typeof target[prop] === 'undefined')
    .map(prop => Object.getOwnPropertyDescriptor(src, prop));
  Object.defineProperties(target, props);
}

global.window = window;
global.document = window.document;
global.navigator = {
  userAgent: 'node.js'
};
copyProps(window, global);