Files
pybricks-code/src/setupTests.ts
T

56 lines
1.5 KiB
TypeScript

// SPDX-License-Identifier: MIT
// Copyright (c) 2020-2023 The Pybricks Authors
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';
import 'navigator.locks';
import crypto from 'crypto';
import { inspect } from 'util';
// @ts-expect-error no typings
import matchMediaPolyfill from 'mq-polyfill';
import { config } from 'react-transition-group';
// avoid react testing library errors about not using act()
config.disabled = true;
jest.mock('./fileStorage/hooks');
//https://stackoverflow.com/a/66515427/1976323
matchMediaPolyfill(window);
// implementation of window.resizeTo for dispatching event
window.resizeTo = function resizeTo(width, height) {
Object.assign(this, {
innerWidth: width,
innerHeight: height,
outerWidth: width,
outerHeight: height,
}).dispatchEvent(new this.Event('resize'));
};
// scroll functions are not implemented in jsdom
// https://github.com/jsdom/jsdom/issues/1695
if (!Element.prototype.scrollTo) {
Element.prototype.scrollTo = jest.fn();
}
Object.defineProperty(global.self, 'crypto', {
value: crypto.webcrypto,
});
// https://github.com/facebook/jest/issues/11698
function fail(reason: unknown): never {
if (typeof reason === 'string') {
throw new Error(reason);
}
throw new Error(inspect(reason));
}
if (global.fail === undefined) {
global.fail = fail;
}