Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scrollIntoView is not a function #1695

Open
JakeDluhy opened this issue Dec 28, 2016 · 19 comments · May be fixed by #3639
Open

scrollIntoView is not a function #1695

JakeDluhy opened this issue Dec 28, 2016 · 19 comments · May be fixed by #3639
Labels
css feature layout Blocked on implementing a layout engine

Comments

@JakeDluhy
Copy link

I'm running a test using a library (grommet) that uses scrollIntoView on an a tag. jsdom is throwing errors when hitting that line of code. I was able to get it to work by adding window.HTMLElement.prototype.scrollIntoView = function() {}; in my testHelper file to setup the tests, but I thought I'd report it to see if it's something you want to fix.

@domenic
Copy link
Member

domenic commented Dec 28, 2016

Yeah this might be worth adding a not-implemented-warning stub for. We can't really implemented it since we don't do layout.

@quantuminformation
Copy link

Any movement on this?

Trying to use in a Jest test, I'm trying to mount a component that calls scrollIntoView on an element, and the test always fails with

TypeError: node.scrollIntoView is not a function
        at Object.scrollInToView src/component/shared/foo.tsx:7
        at User.Object.<anonymous>.User.componentDidMount

@enessoylu
Copy link

@quantuminformation You can use this for the Jest:

Element.prototype.scrollIntoView = jest.fn();

@qmg-JamesT
Copy link

I see this fix everywhere, but were are you importing Element from? I get 'Element is not defined' I am using enzyme with chai.

@quantuminformation
Copy link

You need Element in your tsconfig libs:

ie
'dom'

@enessoylu
Copy link

@qmg-JamesT It is the global element class where the other elements are inherited scrollIntoView method from.

@ado-astpos
Copy link

Hi, is there any update on this without using jest?

@maksymsm
Copy link

hello, you can use window.HTMLElement.prototype.scrollIntoView = jest.fn()

@thisconnect
Copy link

thisconnect commented Feb 22, 2020

I need the same for Element.prototype.scroll = jest.fn()

@enessoylu and @MSmetana where do you recommend putting Element.prototype.scrollIntoView = jest.fn(), in each .test.

When using CRA there is a setupTest.ts, seems to work but idk

import '@testing-library/jest-dom/extend-expect'

Element.prototype.scroll = jest.fn()

@ghost
Copy link

ghost commented Mar 6, 2020

For ava or any other unit test runner you can use window.HTMLElement.prototype.scrollIntoView = () => {} and set it in test.beforeEach() or inside the test function

@tobiloeb
Copy link

For me it was enough to set:

Element.prototype.scrollIntoView` = () => {};

once into setupJest.ts

@jcampbell05
Copy link

This also seems to be the case with scroll

@ccloveak
Copy link

ccloveak commented Dec 21, 2020

Element.prototype.scrollIntoView = jest.fn();

Thanks! it worked.

@asharuDheen-code
Copy link

try this one..
window.HTMLElement.prototype.scrollIntoView = function() {};

@dobradovic
Copy link

dobradovic commented May 17, 2021

How can I mock value for srcollIntoView? I'm using enzyme shallow / jest.

I'm getting "TypeError: Cannot read property 'scrollIntoView' of null. "

Any advice would be helpful, I don't need to test anything regarding to scrollIntoView, I just need to mock some values, because my test failing and can not pass because scrollIntoView is null.

Thanks for your time!

@gabrielgaraujo
Copy link

Anyone have an idea why it happens?

@safi28
Copy link

safi28 commented Feb 16, 2022

@quantuminformation You can use this for the Jest:

Element.prototype.scrollIntoView = jest.fn();

Thank you it works!

SpiritBreaker226 added a commit to SpiritBreaker226/portfolio that referenced this issue Dec 28, 2022
Fix JSDOM is not working with `scrollIntoView` as a bug in JSDOM used
for testing creates a DOM environment in memory so that the test can run
against it. Unfortunately, that environment does not work well with
`scrollIntoView`, used for the React Select.

Ref:

jsdom/jsdom#1695 (comment)
SpiritBreaker226 added a commit to SpiritBreaker226/portfolio that referenced this issue Dec 30, 2022
Fix JSDOM is not working with `scrollIntoView` as a bug in JSDOM used
for testing creates a DOM environment in memory so that the test can run
against it. Unfortunately, that environment does not work well with
`scrollIntoView`, used for the React Select.

Ref:

jsdom/jsdom#1695 (comment)
@ledenis
Copy link

ledenis commented Mar 2, 2023

Why not add the not-implemented-warning stub as suggested in the second comment?

Is there a reason why it has been done for scrollTo but not scrollIntoView?

scrollTo: notImplementedMethod("window.scrollTo")

@carlos-monti
Copy link

It would be nice to have a proper way to restore it after all tests were run but I guess that if we don't have it implemented in jsdom it doesn't care very much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
css feature layout Blocked on implementing a layout engine
Projects
None yet