reaflow icon indicating copy to clipboard operation
reaflow copied to clipboard

TypeError: _a.scrollTo is not a function (in tests)

Open C0DK opened this issue 4 years ago • 8 comments

I'm submitting a...


[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report  
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Other... Please describe:

Current behavior

When creating any Canvas in tests i get an error of TypeError: _a.scrollTo is not a function

For ref here is my code that works just fine in non-test cases:

      <Canvas
        nodes={graph.nodes.map(toReaflowNode(formatNodeLabel))}
        edges={graph.edges.map(toReaflowEdge)}
      />


Full stacktrace

   Error: Uncaught [TypeError: _a.scrollTo is not a function]
        at reportException (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
        at innerInvokeEventListeners (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:333:9)
        at invokeEventListeners (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
        at HTMLUnknownElementImpl._dispatch (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:221:9)
        at HTMLUnknownElementImpl.dispatchEvent (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:94:17)
        at HTMLUnknownElement.dispatchEvent (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:231:34)
        at Object.invokeGuardedCallbackDev (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:3994:16)
        at invokeGuardedCallback (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:4056:31)
        at flushPassiveEffectsImpl (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:23574:9)
        at unstable_runWithPriority (/home/cdk/dev/codoc-webapp/node_modules/scheduler/cjs/scheduler.development.js:646:12) TypeError: _a.scrollTo is not a function
        at /home/cdk/dev/codoc-webapp/node_modules/reaflow/dist/index.cjs.js:442:110
        at invokePassiveEffectCreate (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:23487:20)
        at HTMLUnknownElement.callCallback (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:3945:14)
        at HTMLUnknownElement.callTheUserObjectsOperation (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30)
        at innerInvokeEventListeners (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:318:25)
        at invokeEventListeners (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
        at HTMLUnknownElementImpl._dispatch (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:221:9)
        at HTMLUnknownElementImpl.dispatchEvent (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:94:17)
        at HTMLUnknownElement.dispatchEvent (/home/cdk/dev/codoc-webapp/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:231:34)
        at Object.invokeGuardedCallbackDev (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:3994:16)
        at invokeGuardedCallback (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:4056:31)
        at flushPassiveEffectsImpl (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:23574:9)
        at unstable_runWithPriority (/home/cdk/dev/codoc-webapp/node_modules/scheduler/cjs/scheduler.development.js:646:12)
        at runWithPriority$1 (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:11276:10)
        at flushPassiveEffects (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom.development.js:23447:14)
        at Object.<anonymous>.flushWork (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom-test-utils.development.js:992:10)
        at act (/home/cdk/dev/codoc-webapp/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1107:9)
        at render (/home/cdk/dev/codoc-webapp/node_modules/@testing-library/react/dist/pure.js:95:26)
        at render (/home/cdk/dev/codoc-webapp/src/_test/react.jsx:21:8)
        at Object.<anonymous> (/home/cdk/dev/codoc-webapp/src/components/GraphWrapper.test.jsx:41:39)
        at Promise.then.completed (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/utils.js:276:28)
        at new Promise (<anonymous>)
        at callAsyncCircusFn (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/utils.js:216:10)
        at _callCircusTest (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/run.js:212:40)
        at processTicksAndRejections (node:internal/process/task_queues:94:5)
        at _runTest (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/run.js:149:3)
        at _runTestsForDescribeBlock (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/run.js:63:9)
        at _runTestsForDescribeBlock (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/run.js:57:9)
        at run (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/run.js:25:3)
        at runAndTransformResultsToJestFormat (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:176:21)
        at jestAdapter (/home/cdk/dev/codoc-webapp/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:109:19)
        at runTestInternal (/home/cdk/dev/codoc-webapp/node_modules/jest-runner/build/runTest.js:380:16)
        at runTest (/home/cdk/dev/codoc-webapp/node_modules/jest-runner/build/runTest.js:472:34)
        at Object.worker (/home/cdk/dev/codoc-webapp/node_modules/jest-runner/build/testWorker.js:133:12)

Expected behavior

That something would load for my tests :)

Minimal reproduction of the problem with instructions

What is the motivation / use case for changing the behavior?

Environment


Libs:
- react version: 17.0.1
- realayers version: 3.0.14


Browser:
- [ ] Chrome (desktop) version XX
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX
 
For Tooling issues:
- Node version: XX  
- Platform:  linux

Others:

C0DK avatar Mar 25 '21 08:03 C0DK

I think this is related to scrollTo and the test driver.what testing library are you using?

amcdnl avatar Aug 26 '21 12:08 amcdnl

Also have this problem with "@testing-library/react": "^11.1.0"

Nerevar123 avatar Aug 29 '21 10:08 Nerevar123

With this passed the tests successfully:

import { ResizeObserver } from '@juggle/resize-observer';

window.ResizeObserver = ResizeObserver; Element.prototype.scrollTo = jest.fn();

but still, have a console.error:

console.error 💡 react-cool-dimensions: the browser doesn't support Resize Observer, please use polyfill: https://github.com/wellyshen/react-cool-dimensions#resizeobserver-polyfill

  at node_modules/react-cool-dimensions/dist/index.js:1:2420
  at invokePassiveEffectCreate (node_modules/react-dom/cjs/react-dom.development.js:23487:20)
  at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:3945:14)
  at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30)
  at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:338:25)
  at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
  at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:221:9)
  at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:94:17)

Nerevar123 avatar Aug 29 '21 11:08 Nerevar123

@Nerevar123 - Maybe we should log and reference this ticket in that lib?

amcdnl avatar Aug 30 '21 11:08 amcdnl

@amcdnl https://github.com/wellyshen/react-cool-dimensions/issues/558 done Maybe the problem with the version of this package, the current is 2.0.7, reaflow uses 1.3.4

Nerevar123 avatar Aug 30 '21 15:08 Nerevar123

Got it. The resizer is locked at that version because various libraries in reaviz org all use it. I will need to update them all and test to make sure new version works. I will make a item to do that.

amcdnl avatar Aug 30 '21 16:08 amcdnl

Adding this line to setupTests.ts fixed the problem:

window.ResizeObserverEntry = jest.fn();

Nerevar123 avatar Sep 02 '21 06:09 Nerevar123

Can any of you retry on latest? I think I solved it but not sure.

amcdnl avatar Sep 21 '21 12:09 amcdnl