Skip to content

Instantly share code, notes, and snippets.

@renanvalentin
Last active June 29, 2017 18:24
Show Gist options
  • Save renanvalentin/eb0685f7a853f056383543d00b2b971f to your computer and use it in GitHub Desktop.
Save renanvalentin/eb0685f7a853f056383543d00b2b971f to your computer and use it in GitHub Desktop.
Storybook's jsdom setup
var mockWebSocket = require('mock-socket').WebSocket;
/* globals window, document */
const jsdom = require('jsdom').jsdom;
global.document = jsdom('');
global.window = document.defaultView;
Object.keys(document.defaultView).forEach((property) => {
if (typeof global[property] === 'undefined') {
global[property] = document.defaultView[property];
}
});
global.navigator = {
userAgent: 'storyshots',
};
global.localStorage = global.window.localStorage = {
_data: {},
setItem(id, val) { this._data[id] = String(val); },
getItem(id) { return this._data[id] ? this._data[id] : undefined; },
removeItem(id) { delete this._data[id]; },
clear() { this._data = {}; },
};
window.matchMedia = () => ({ matches: true });
global.WebSocket = mockWebSocket;
require('usertiming');
Object.keys(window).forEach((key) => {
if (!(key in global)) {
global[key] = window[key];
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment