Cypress assert contextmenu preventDefault true

Cypress assert contextmenu preventDefault true

我正在尝试测试当用户右键单击时上下文菜单不显示。

我有 cy.getByTestId('element-to-click').rightclick();

当我单击 rightclick 并查看命令输出时,我看到有一个数组 Mouse Events,其中之一是 Event Type: 'contextmenu' 并且有 Prevented Default: true

我不知道如何在 Cypress 中断言 contextmenu 已将 Prevented Default 设置为 true

我不知道为什么围绕事件进行测试如此困难,但是 reverse-engineering 赛普拉斯控制台 table 我想到了这个。

const getClickEvents = (subject) => {
  const { mouse } = cy.devices
  const coords = Cypress.dom.getElementCoordinatesByPosition(subject)
  const clickEvents = mouse.click(coords.fromElViewport, subject[0])
  return clickEvents
}

cy.get('button#1')
  .then(getClickEvents)
  .should(clickEvents => {
    expect(clickEvents.click.preventedDefault).to.eq(true)  // passes
  })

cy.get('button#2')
  .then(getClickEvents)
  .should(clickEvents => {
    expect(clickEvents.click.preventedDefault).to.eq(false)  // passes
  })

其中 clickEvents 是整个 table 的数据,如您的问题所示,因此您可以轻松挑选出要断言的属性。