You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The front end tests are using jasmine's global fail() to explicitly fail a test when certain React warnings are raised. fail() was not part of jest's documented API (see jestjs/jest#2129 (comment)) and it no longer works. This leads to a long and difficult to read error.
One example is when using the prop-types library and a required prop is not defined. This results in a warning being printed to the output via console.error which needs to be addressed and not the secondary Error: Uncaught [ReferenceError: fail is not defined].
Example Output
console.error
Warning: Failed prop type: The prop `environments` is marked as required in `ReleaseSeries`, but its value is `undefined`.
in ReleaseSeries (created by withApi(ReleaseSeries))
in withApi(ReleaseSeries) (created by WithOrganizationMockWrapper)
in WithOrganizationMockWrapper (created by withRouter(WithOrganizationMockWrapper))
in withRouter(WithOrganizationMockWrapper) (created by WrapperComponent)
in WrapperComponent
32 | !isIgnored
33 | ) {
> 34 | originalConsoleError(message, ...args);
| ^
35 | const err = new Error('Warnings received from console.error()');
36 | const lines = err.stack?.split('\n');
37 | const startIndex = lines?.findIndex(line => line.includes('tests/js/spec'));
at BufferedConsole.<anonymous> (tests/js/throw-on-react-error.js:34:25)
at printWarning (node_modules/prop-types/checkPropTypes.js:20:15)
at checkPropTypes (node_modules/prop-types/checkPropTypes.js:82:11)
at validatePropTypes (node_modules/react/cjs/react.development.js:1714:7)
at createElementWithValidation (node_modules/react/cjs/react.development.js:1813:5)
console.error
Error: Uncaught [ReferenceError: fail is not defined]
at reportException (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:24)
at invokeEventListeners (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:209:9)
at HTMLUnknownElementImpl._dispatch (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
at HTMLUnknownElementImpl.dispatchEvent (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
at HTMLUnknownElementImpl.dispatchEvent (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
at HTMLUnknownElement.dispatchEvent (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
at Object.invokeGuardedCallbackDev (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:237:16)
at invokeGuardedCallback (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:292:31)
at beginWork$1 (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:23203:7)
at performUnitOfWork (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:22157:12) ReferenceError: fail is not defined
at BufferedConsole.<anonymous> (/Users/tonyxiao/Documents/repos/sentry/tests/js/throw-on-react-error.js:42:5)
at /Users/tonyxiao/Documents/repos/sentry/node_modules/jest-environment-jsdom/node_modules/jest-mock/build/index.js:480:41
at BufferedConsole.<anonymous> (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-environment-jsdom/node_modules/jest-mock/build/index.js:489:13)
at BufferedConsole.mockConstructor [as error] (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-environment-jsdom/node_modules/jest-mock/build/index.js:182:19)
at printWarning (/Users/tonyxiao/Documents/repos/sentry/node_modules/prop-types/checkPropTypes.js:20:15)
at checkPropTypes (/Users/tonyxiao/Documents/repos/sentry/node_modules/prop-types/checkPropTypes.js:82:11)
at validatePropTypes (/Users/tonyxiao/Documents/repos/sentry/node_modules/react/cjs/react.development.js:1714:7)
at createElementWithValidation (/Users/tonyxiao/Documents/repos/sentry/node_modules/react/cjs/react.development.js:1813:5)
at jsx (/Users/tonyxiao/Documents/repos/sentry/node_modules/@emotion/core/dist/core.cjs.dev.js:173:32)
at _class.render (/Users/tonyxiao/Documents/repos/sentry/src/sentry/static/sentry/app/utils/withApi.tsx:50:14)
at finishClassComponent (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:17160:31)
at updateClassComponent (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:17110:24)
at beginWork (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:18620:16)
at HTMLUnknownElement.callCallback (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:188:14)
at invokeEventListeners (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
at HTMLUnknownElementImpl._dispatch (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
at HTMLUnknownElementImpl.dispatchEvent (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
at HTMLUnknownElementImpl.dispatchEvent (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
at HTMLUnknownElement.dispatchEvent (/Users/tonyxiao/Documents/repos/sentry/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
at Object.invokeGuardedCallbackDev (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:237:16)
at invokeGuardedCallback (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:292:31)
at beginWork$1 (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:23203:7)
at performUnitOfWork (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:22157:12)
at workLoopSync (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:22130:22)
at performSyncWorkOnRoot (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:21756:9)
at scheduleUpdateOnFiber (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:21188:7)
at updateContainer (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:24373:3)
at /Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:24758:7
at unbatchedUpdates (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:21903:12)
at legacyRenderSubtreeIntoContainer (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:24757:5)
at Object.render (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:24840:10)
at fn (/Users/tonyxiao/Documents/repos/sentry/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:430:26)
at /Users/tonyxiao/Documents/repos/sentry/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:347:37
at batchedUpdates$1 (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom.development.js:21856:12)
at Object.act (/Users/tonyxiao/Documents/repos/sentry/node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
at wrapAct (/Users/tonyxiao/Documents/repos/sentry/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:347:13)
at Object.render (/Users/tonyxiao/Documents/repos/sentry/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:416:16)
at new ReactWrapper (/Users/tonyxiao/Documents/repos/sentry/node_modules/enzyme/src/ReactWrapper.js:115:16)
at mount (/Users/tonyxiao/Documents/repos/sentry/node_modules/enzyme/src/mount.js:10:10)
at _callee$ (/Users/tonyxiao/Documents/repos/sentry/tests/js/spec/components/charts/releaseSeries.spec.jsx:29:21)
at tryCatch (/Users/tonyxiao/Documents/repos/sentry/node_modules/regenerator-runtime/runtime.js:45:40)
at Generator.invoke [as _invoke] (/Users/tonyxiao/Documents/repos/sentry/node_modules/regenerator-runtime/runtime.js:274:22)
at Generator.prototype.<computed> [as next] (/Users/tonyxiao/Documents/repos/sentry/node_modules/regenerator-runtime/runtime.js:97:21)
at asyncGeneratorStep (/Users/tonyxiao/Documents/repos/sentry/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
at _next (/Users/tonyxiao/Documents/repos/sentry/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9)
at /Users/tonyxiao/Documents/repos/sentry/node_modules/@babel/runtime/helpers/asyncToGenerator.js:32:7
at new Promise (<anonymous>)
at Object.<anonymous> (/Users/tonyxiao/Documents/repos/sentry/node_modules/@babel/runtime/helpers/asyncToGenerator.js:21:12)
at Promise.then.completed (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/utils.js:276:28)
at new Promise (<anonymous>)
at callAsyncCircusFn (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/utils.js:216:10)
at _callCircusTest (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/run.js:212:40)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at _runTest (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/run.js:149:3)
at _runTestsForDescribeBlock (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/run.js:63:9)
at _runTestsForDescribeBlock (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/run.js:57:9)
at run (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/run.js:25:3)
at runAndTransformResultsToJestFormat (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:176:21)
at jestAdapter (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:109:19)
at runTestInternal (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-runner/build/runTest.js:380:16)
at runTest (/Users/tonyxiao/Documents/repos/sentry/node_modules/jest-runner/build/runTest.js:472:34)
32 | !isIgnored
33 | ) {
> 34 | originalConsoleError(message, ...args);
| ^
35 | const err = new Error('Warnings received from console.error()');
36 | const lines = err.stack?.split('\n');
37 | const startIndex = lines?.findIndex(line => line.includes('tests/js/spec'));
at BufferedConsole.<anonymous> (tests/js/throw-on-react-error.js:34:25)
at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:70:28)
The text was updated successfully, but these errors were encountered:
Summary
The front end tests are using jasmine's global
fail()
to explicitly fail a test when certain React warnings are raised.fail()
was not part of jest's documented API (see jestjs/jest#2129 (comment)) and it no longer works. This leads to a long and difficult to read error.One example is when using the
prop-types
library and a required prop is not defined. This results in a warning being printed to the output viaconsole.error
which needs to be addressed and not the secondaryError: Uncaught [ReferenceError: fail is not defined]
.Example Output
The text was updated successfully, but these errors were encountered: