禁用 Cypress 自动滚动

N.N*_*cko 8 javascript reactjs cypress

我正在测试我的应用程序,我有很长的侧边菜单,并且我有这样的代码:

cy.get('tab').click({force: true})
Run Code Online (Sandbox Code Playgroud)

自动滚动发生在获取和单击之间,然后选定的选项卡不可见,因为顶部菜单的位置已固定。我找到了很多解决方案,但没有一个有效。到目前为止,我尝试.click({force: true})过在 get 和 click 之间.click(scrollBehaviour: false})进行尝试.scrollIntoView()。还有其他方法可以解决这个问题吗?

pky*_*eck 13

您可以全局或每个测试(-套件)设置scrollBehavior

我在每次测试的基础上禁用它,如下所示:

it('check something w/ autoscroll disabled', { scrollBehavior: false }, () => {
  cy.get('.tab').click();
  // do something else ...
});
Run Code Online (Sandbox Code Playgroud)

文档: https: //docs.cypress.io/guides/references/configuration#Actionability


小智 1

取决于自动滚动的实现方式,您可以尝试将其添加到测试的顶部

cy.window().then(win => win.scrollTo = cy.stub())
Run Code Online (Sandbox Code Playgroud)

它试图消除本机scrollTo函数。我没试过,如果win.scrollTo是只读的话可能会失败。

这是参考页面Window.scrollTo(),可以在注释中看到一些其他变体,以便尝试应用程序是否使用这些变体。