Files
opsxshell/test/utils/nativeContextMenu.test.ts

27 lines
1.1 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { allowsNativeContextMenu, suppressWebViewContextMenu } from '../../src/utils/nativeContextMenu'
describe('native context menu policy', () => {
it('suppresses the WebView menu on ordinary application surfaces', () => {
const surface = document.createElement('div')
document.body.append(surface)
const event = new MouseEvent('contextmenu', { bubbles: true, cancelable: true })
surface.addEventListener('contextmenu', suppressWebViewContextMenu)
surface.dispatchEvent(event)
expect(event.defaultPrevented).toBe(true)
})
it('keeps native copy and paste actions for editable fields', () => {
const input = document.createElement('input')
const editor = document.createElement('div')
editor.setAttribute('contenteditable', 'true')
expect(allowsNativeContextMenu(input)).toBe(true)
expect(allowsNativeContextMenu(editor)).toBe(true)
const event = new MouseEvent('contextmenu', { bubbles: true, cancelable: true })
input.addEventListener('contextmenu', suppressWebViewContextMenu)
input.dispatchEvent(event)
expect(event.defaultPrevented).toBe(false)
})
})