diff --git a/browser_patches/firefox/juggler/content/PageAgent.js b/browser_patches/firefox/juggler/content/PageAgent.js index 4edfc61a19c96..cee21a31b2807 100644 --- a/browser_patches/firefox/juggler/content/PageAgent.js +++ b/browser_patches/firefox/juggler/content/PageAgent.js @@ -480,7 +480,23 @@ export class PageAgent { tip.commitCompositionWith(text, keyEvent); } else { const flags = 0; - tip.keydown(keyEvent, flags); + // On macOS, Firefox treats Option+ as text input. Empty text + // means no text should be inserted, so we consume keydown after the page + // has seen it, which prevents the keypress, same as in Chromium and WebKit. + const suppressTextInput = !text && [...key].length === 1 && Services.appinfo.OS === 'Darwin'; + if (!suppressTextInput) { + tip.keydown(keyEvent, flags); + } else { + const dispose = helper.addEventListener(this._docShell.chromeEventHandler, 'keydown', event => { + if (event.altKey && !event.ctrlKey && !event.metaKey) + event.preventDefault(); + }, { capture: true, mozSystemGroup: true }); + try { + tip.keydown(keyEvent, flags); + } finally { + dispose(); + } + } } } else if (type === 'keyup') { if (text) diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index 5fc301fa83126..8ced57ef4b285 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -17,7 +17,7 @@ }, { "name": "firefox", - "revision": "1551", + "revision": "1552", "installByDefault": true, "browserVersion": "156.0", "title": "Firefox"