diff --git a/packages/react-cards/config/tests.js b/packages/react-cards/config/tests.js index c8f540d3da2cba..7d26fb36b5d0b2 100644 --- a/packages/react-cards/config/tests.js +++ b/packages/react-cards/config/tests.js @@ -9,10 +9,5 @@ setIconOptions({ disableWarnings: true, }); -// Mock requestAnimationFrame for React 16+. -global.requestAnimationFrame = callback => { - setTimeout(callback, 0); -}; - // Configure enzyme. configure({ adapter: new Adapter() }); diff --git a/packages/react-icon-provider/config/tests.js b/packages/react-icon-provider/config/tests.js index f1e4a5670a217e..2e211ae9e21420 100644 --- a/packages/react-icon-provider/config/tests.js +++ b/packages/react-icon-provider/config/tests.js @@ -1,12 +1 @@ /** Jest test setup file. */ - -const { configure } = require('enzyme'); -const Adapter = require('enzyme-adapter-react-16'); - -// Mock requestAnimationFrame for React 16+. -global.requestAnimationFrame = callback => { - setTimeout(callback, 0); -}; - -// Configure enzyme. -configure({ adapter: new Adapter() }); diff --git a/packages/react-icon-provider/src/IconProvider.test.tsx b/packages/react-icon-provider/src/IconProvider.test.tsx index a62636d493d31f..3474f843d0762d 100644 --- a/packages/react-icon-provider/src/IconProvider.test.tsx +++ b/packages/react-icon-provider/src/IconProvider.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { mount } from 'enzyme'; +import { render } from '@testing-library/react'; import { IconProvider, useIconSubset } from './IconProvider'; import type { IIconSubset } from '@fluentui/style-utilities'; @@ -27,7 +27,7 @@ describe('IconProvider', () => { resolvedIcon = useIconSubset(); return null; }; - mount( + render( , diff --git a/packages/react-list/config/tests.js b/packages/react-list/config/tests.js index 3882d3702ddc99..2e211ae9e21420 100644 --- a/packages/react-list/config/tests.js +++ b/packages/react-list/config/tests.js @@ -1,7 +1 @@ /** Jest test setup file. */ - -const { configure } = require('enzyme'); -const Adapter = require('enzyme-adapter-react-16'); - -// Configure enzyme. -configure({ adapter: new Adapter() }); diff --git a/packages/react-window-provider/config/tests.js b/packages/react-window-provider/config/tests.js index 3882d3702ddc99..2e211ae9e21420 100644 --- a/packages/react-window-provider/config/tests.js +++ b/packages/react-window-provider/config/tests.js @@ -1,7 +1 @@ /** Jest test setup file. */ - -const { configure } = require('enzyme'); -const Adapter = require('enzyme-adapter-react-16'); - -// Configure enzyme. -configure({ adapter: new Adapter() }); diff --git a/packages/react-window-provider/src/WindowProvider.test.tsx b/packages/react-window-provider/src/WindowProvider.test.tsx index b4276dfb793416..0e49133e4d2d6a 100644 --- a/packages/react-window-provider/src/WindowProvider.test.tsx +++ b/packages/react-window-provider/src/WindowProvider.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { useWindow, useDocument, WindowProvider } from './WindowProvider'; -import { safeMount } from '@fluentui/test-utilities'; +import { render } from '@testing-library/react'; describe('WindowProvider', () => { let lastWindow: Window | undefined; @@ -14,7 +14,7 @@ describe('WindowProvider', () => { }; it('can provide defaults for node', () => { - safeMount(); + render(); expect(lastWindow).toBe(window); expect(lastDocument).toBe(document); @@ -24,7 +24,7 @@ describe('WindowProvider', () => { const mockDocument = ({} as unknown) as Document; const mockWindow = ({ document: mockDocument } as unknown) as Window; - safeMount( + render( , diff --git a/packages/theme/config/tests.js b/packages/theme/config/tests.js index 3882d3702ddc99..2e211ae9e21420 100644 --- a/packages/theme/config/tests.js +++ b/packages/theme/config/tests.js @@ -1,7 +1 @@ /** Jest test setup file. */ - -const { configure } = require('enzyme'); -const Adapter = require('enzyme-adapter-react-16'); - -// Configure enzyme. -configure({ adapter: new Adapter() }); diff --git a/scripts/jest/jest-resources.js b/scripts/jest/jest-resources.js index a5a2219691b4a4..9c21cf68ab8d01 100644 --- a/scripts/jest/jest-resources.js +++ b/scripts/jest/jest-resources.js @@ -42,45 +42,49 @@ module.exports = { testRegex: '(/__tests__/.*|\\.(test|spec))\\.js$', }), jestAliases, - createConfig: customConfig => - merge( - { - moduleNameMapper: { - 'ts-jest': resolve.sync('ts-jest'), - '\\.(scss)$': path.resolve(__dirname, 'jest-style-mock.js'), - KeyCodes: path.resolve(__dirname, 'jest-mock.js'), - ...jestAliases(), - }, + /** + * @param {Partial} [customConfig] + */ + createConfig: (customConfig = {}) => { + /** @type {import('@jest/types').Config.InitialOptions} */ + const defaultConfig = { + moduleNameMapper: { + 'ts-jest': resolve.sync('ts-jest'), + '\\.(scss)$': path.resolve(__dirname, 'jest-style-mock.js'), + KeyCodes: path.resolve(__dirname, 'jest-mock.js'), + ...jestAliases(), + }, - transform: { - '.(ts|tsx)': resolve.sync('ts-jest/dist'), - }, + transform: { + '.(ts|tsx)': resolve.sync('ts-jest/dist'), + }, - transformIgnorePatterns: ['/node_modules/', '/lib-commonjs/', '\\.js$'], + transformIgnorePatterns: ['/node_modules/', '/lib-commonjs/', '\\.js$'], - reporters: [path.resolve(__dirname, './jest-reporter.js')], + reporters: [path.resolve(__dirname, './jest-reporter.js')], - testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|tsx)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], + testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|tsx)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], - setupFiles: [path.resolve(__dirname, 'jest-setup.js')], + setupFiles: [path.resolve(__dirname, 'jest-setup.js')], - moduleDirectories: [ - 'node_modules', - path.resolve(packageRoot, 'node_modules'), - path.resolve(__dirname, '../node_modules'), - ], + moduleDirectories: [ + 'node_modules', + path.resolve(packageRoot, 'node_modules'), + path.resolve(__dirname, '../node_modules'), + ], - globals: { - 'ts-jest': { - diagnostics: false, - }, + globals: { + 'ts-jest': { + diagnostics: false, }, + }, - testURL: 'http://localhost', + testURL: 'http://localhost', - watchPlugins: ['jest-watch-typeahead/filename', 'jest-watch-typeahead/testname'], - }, - customConfig, - ), + watchPlugins: ['jest-watch-typeahead/filename', 'jest-watch-typeahead/testname'], + }; + + return merge(defaultConfig, customConfig); + }, }; diff --git a/scripts/jest/jest-setup.js b/scripts/jest/jest-setup.js index f58ab42efcf6f7..2746eb3135b53a 100644 --- a/scripts/jest/jest-setup.js +++ b/scripts/jest/jest-setup.js @@ -1,5 +1,7 @@ // @ts-check +// Jest setup file for all v8 packages + // Mock requestAnimationFrame and cancelAnimationFrame for all packages // @ts-ignore global.requestAnimationFrame = callback => { diff --git a/scripts/jest/setupTests.js b/scripts/jest/setupTests.js index cb2445b48461b6..caadf05fc19d10 100644 --- a/scripts/jest/setupTests.js +++ b/scripts/jest/setupTests.js @@ -1,10 +1,8 @@ /** - * Setup + * Setup for northstar/v0 packages (under packages/fluentui). * This is the bootstrap code that is run before any tests, utils, mocks. */ -/* eslint-disable no-console */ - const enzyme = require('enzyme'); const Adapter = require('enzyme-adapter-react-16');