diff --git a/desktop/babel-transformer/src/electron-requires.ts b/desktop/babel-transformer/src/electron-requires.ts index c1a94363a..fba5689f9 100644 --- a/desktop/babel-transformer/src/electron-requires.ts +++ b/desktop/babel-transformer/src/electron-requires.ts @@ -34,7 +34,6 @@ const BUILTINS = [ 'assert', 'util', 'path', - 'perf_hooks', 'punycode', 'querystring', 'cluster', diff --git a/desktop/flipper-ui-core/src/Client.tsx b/desktop/flipper-ui-core/src/Client.tsx index 7c103ee03..f0bbc9dfc 100644 --- a/desktop/flipper-ui-core/src/Client.tsx +++ b/desktop/flipper-ui-core/src/Client.tsx @@ -14,7 +14,6 @@ import {PluginDefinition} from './plugin'; import BaseDevice from './devices/BaseDevice'; import {Logger} from 'flipper-common'; import {Store} from './reducers/index'; -import {performance} from 'perf_hooks'; import { reportPluginFailures, NoLongerConnectedToClientError, diff --git a/desktop/flipper-ui-core/src/chrome/ShareSheetExportFile.tsx b/desktop/flipper-ui-core/src/chrome/ShareSheetExportFile.tsx index c53814621..032d4e617 100644 --- a/desktop/flipper-ui-core/src/chrome/ShareSheetExportFile.tsx +++ b/desktop/flipper-ui-core/src/chrome/ShareSheetExportFile.tsx @@ -10,7 +10,6 @@ import {FlexColumn, Button, styled, Text, FlexRow, Spacer} from '../ui'; import React, {Component} from 'react'; import {reportPlatformFailures} from 'flipper-common'; -import {performance} from 'perf_hooks'; import {Logger} from 'flipper-common'; import {IdlerImpl} from '../utils/Idler'; import { diff --git a/desktop/flipper-ui-core/src/chrome/ShareSheetExportUrl.tsx b/desktop/flipper-ui-core/src/chrome/ShareSheetExportUrl.tsx index a222474aa..6917ddf0f 100644 --- a/desktop/flipper-ui-core/src/chrome/ShareSheetExportUrl.tsx +++ b/desktop/flipper-ui-core/src/chrome/ShareSheetExportUrl.tsx @@ -24,7 +24,6 @@ import { } from '../utils/exportData'; import ShareSheetErrorList from './ShareSheetErrorList'; import {reportPlatformFailures} from 'flipper-common'; -import {performance} from 'perf_hooks'; import ShareSheetPendingDialog from './ShareSheetPendingDialog'; import {getLogger} from 'flipper-common'; import {resetSupportFormV2State} from '../reducers/supportForm'; diff --git a/desktop/flipper-ui-core/src/dispatcher/tracking.tsx b/desktop/flipper-ui-core/src/dispatcher/tracking.tsx index ab693b39e..a4cf24e9d 100644 --- a/desktop/flipper-ui-core/src/dispatcher/tracking.tsx +++ b/desktop/flipper-ui-core/src/dispatcher/tracking.tsx @@ -7,7 +7,6 @@ * @format */ -import {performance} from 'perf_hooks'; import EventEmitter from 'eventemitter3'; import {State, Store} from '../reducers/index'; diff --git a/desktop/flipper-ui-core/src/reducers/connections.tsx b/desktop/flipper-ui-core/src/reducers/connections.tsx index 9b6f2c997..adca1785e 100644 --- a/desktop/flipper-ui-core/src/reducers/connections.tsx +++ b/desktop/flipper-ui-core/src/reducers/connections.tsx @@ -18,7 +18,6 @@ import type { Logger, FlipperServer, } from 'flipper-common'; -import {performance} from 'perf_hooks'; import type {Actions} from '.'; import {WelcomeScreenStaticView} from '../sandy-chrome/WelcomeScreen'; import {isDevicePluginDefinition} from '../utils/pluginUtils'; diff --git a/desktop/flipper-ui-core/src/utils/exportData.tsx b/desktop/flipper-ui-core/src/utils/exportData.tsx index 0f5ca3fe9..74bd851b9 100644 --- a/desktop/flipper-ui-core/src/utils/exportData.tsx +++ b/desktop/flipper-ui-core/src/utils/exportData.tsx @@ -32,7 +32,6 @@ import { SupportFormRequestDetailsState, } from '../reducers/supportForm'; import {deconstructClientId} from 'flipper-common'; -import {performance} from 'perf_hooks'; import {processMessageQueue} from './messageQueue'; import {getPluginTitle} from './pluginUtils'; import {capture} from './screenshot'; diff --git a/desktop/scripts/jest-setup-after.js b/desktop/scripts/jest-setup-after.js index 10506f442..fbdc7ae8c 100644 --- a/desktop/scripts/jest-setup-after.js +++ b/desktop/scripts/jest-setup-after.js @@ -39,6 +39,23 @@ console.debug = function () { // Intentional noop, we don't want debug statements in Jest runs }; +// make perf tools available in Node (it is available in Browser / Electron just fine) +const {PerformanceObserver, performance} = require('perf_hooks'); +Object.freeze(performance); +Object.freeze(Object.getPrototypeOf(performance)); +// Something in our unit tests is messing with the performance global +// This fixes that..... +Object.defineProperty(global, 'performance', { + get() { + return performance; + }, + set() { + throw new Error('Attempt to overwrite global.performance'); + }, +}); + +global.PerformanceObserver = PerformanceObserver; + // https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom Object.defineProperty(window, 'matchMedia', { writable: true,