From 6b939fdf9e5846a569df82c8ea2ca874323ec728 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Wed, 12 Aug 2026 01:02:44 +0000 Subject: [PATCH] chore: upgrade user event (#10453) --- ...ary-user-event-npm-14.6.3-15ecebe390.patch | 111 ------------------ ...ary-user-event-npm-14.6.4-1532248d3b.patch | 39 ++++++ package.json | 4 +- packages/@react-spectrum/ai/package.json | 2 +- packages/@react-spectrum/s2/package.json | 2 +- .../@react-spectrum/test-utils/package.json | 2 +- packages/dev/test-utils/package.json | 2 +- yarn.lock | 26 ++-- 8 files changed, 58 insertions(+), 130 deletions(-) delete mode 100644 .yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch create mode 100644 .yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch diff --git a/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch b/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch deleted file mode 100644 index 027009f60b6..00000000000 --- a/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch +++ /dev/null @@ -1,111 +0,0 @@ -diff --git a/dist/cjs/document/prepareDocument.js b/dist/cjs/document/prepareDocument.js -index 39a24b8f2ccdc52739d130480ab18975073616cb..0c3f5199401c15b90230c25a02de364eeef3e297 100644 ---- a/dist/cjs/document/prepareDocument.js -+++ b/dist/cjs/document/prepareDocument.js -@@ -30,7 +30,7 @@ function prepareDocument(document) { - const initialValue = UI.getInitialValue(el); - if (initialValue !== undefined) { - if (el.value !== initialValue) { -- dispatchEvent.dispatchDOMEvent(el, 'change'); -+ el.dispatchEvent(new Event('change')); - } - UI.clearInitialValue(el); - } -diff --git a/dist/cjs/event/behavior/keydown.js b/dist/cjs/event/behavior/keydown.js -index 47aaf21bd48856df8bfe88b7509955c5947bf89b..5a5b2030ebbd5b86fb0456597bf13b13902f86cf 100644 ---- a/dist/cjs/event/behavior/keydown.js -+++ b/dist/cjs/event/behavior/keydown.js -@@ -110,7 +110,7 @@ const keydownBehavior = { - }, - Tab: (event, target, instance)=>{ - return ()=>{ -- const dest = getTabDestination.getTabDestination(target, instance.system.keyboard.modifiers.Shift); -+ const dest = getTabDestination.getTabDestination(document.activeElement, instance.system.keyboard.modifiers.Shift); - focus.focusElement(dest); - if (selection.hasOwnSelection(dest)) { - UI.setUISelection(dest, { -diff --git a/dist/cjs/keyboard/index.js b/dist/cjs/keyboard/index.js -index 18f5b4b8eb995fe5ecb352230f71b25e90f2a8a0..e5e17d1d3089aa8ea5c3f55a06aa746eb3a8258a 100644 ---- a/dist/cjs/keyboard/index.js -+++ b/dist/cjs/keyboard/index.js -@@ -19,7 +19,7 @@ async function keyboardAction(instance, { keyDef, releasePrevious, releaseSelf, - } - if (!releasePrevious) { - for(let i = 1; i <= repeat; i++){ -- await system.keyboard.keydown(instance, keyDef); -+ await system.keyboard.keydown(instance, keyDef, i > 1); - if (i < repeat) { - await wait.wait(instance.config); - } -diff --git a/dist/cjs/system/keyboard.js b/dist/cjs/system/keyboard.js -index 85857d66108baa3ddd31dd7d8ef5bc00fdc5caba..f4ce65278983653766afce94e083856af522f51d 100644 ---- a/dist/cjs/system/keyboard.js -+++ b/dist/cjs/system/keyboard.js -@@ -50,7 +50,7 @@ class KeyboardHost { - getPressedKeys() { - return this.pressed.values().map((p)=>p.keyDef); - } -- /** Press a key */ async keydown(instance, keyDef) { -+ /** Press a key */ async keydown(instance, keyDef, repeat = false) { - const key = String(keyDef.key); - const code = String(keyDef.code); - const target = getActiveElement.getActiveElementOrBody(instance.config.document); -@@ -61,7 +61,8 @@ class KeyboardHost { - } - const unprevented = instance.dispatchUIEvent(target, 'keydown', { - key, -- code -+ code, -+ repeat - }); - if (isModifierLock(key) && !this.modifiers[key]) { - this.modifiers[key] = true; -diff --git a/dist/cjs/utils/focus/getActiveElement.js b/dist/cjs/utils/focus/getActiveElement.js -index d80eef7fcfe64e66df7e2e1d92d9a4a5dc7b1543..0e3b4181b88426b1947de7d5dbe6a3e977d5b77b 100644 ---- a/dist/cjs/utils/focus/getActiveElement.js -+++ b/dist/cjs/utils/focus/getActiveElement.js -@@ -9,6 +9,8 @@ function getActiveElement(document) { - if (activeElementInShadowTree) { - return activeElementInShadowTree; - } -+ } else if (activeElement && activeElement.tagName === 'IFRAME') { -+ return getActiveElement(activeElement.contentWindow.document); - } - // Browser does not yield disabled elements as document.activeElement - jsdom does - if (isDisabled.isDisabled(activeElement)) { -diff --git a/dist/esm/keyboard/index.js b/dist/esm/keyboard/index.js -index 9c9feb7b82aabeadd8acbd9ec8f4127e302a4634..1456a5cf406382ee08b4bb7184499632bd8d3bd3 100644 ---- a/dist/esm/keyboard/index.js -+++ b/dist/esm/keyboard/index.js -@@ -17,7 +17,7 @@ async function keyboardAction(instance, { keyDef, releasePrevious, releaseSelf, - } - if (!releasePrevious) { - for(let i = 1; i <= repeat; i++){ -- await system.keyboard.keydown(instance, keyDef); -+ await system.keyboard.keydown(instance, keyDef, i > 1); - if (i < repeat) { - await wait(instance.config); - } -diff --git a/dist/esm/system/keyboard.js b/dist/esm/system/keyboard.js -index 76ffd4266d28cdd252d38d32ae4117711a95adb6..0f75b6875e58f9f5e7b84009e0b691870cb77793 100644 ---- a/dist/esm/system/keyboard.js -+++ b/dist/esm/system/keyboard.js -@@ -48,7 +48,7 @@ class KeyboardHost { - getPressedKeys() { - return this.pressed.values().map((p)=>p.keyDef); - } -- /** Press a key */ async keydown(instance, keyDef) { -+ /** Press a key */ async keydown(instance, keyDef, repeat = false) { - const key = String(keyDef.key); - const code = String(keyDef.code); - const target = getActiveElementOrBody(instance.config.document); -@@ -59,7 +59,8 @@ class KeyboardHost { - } - const unprevented = instance.dispatchUIEvent(target, 'keydown', { - key, -- code -+ code, -+ repeat - }); - if (isModifierLock(key) && !this.modifiers[key]) { - this.modifiers[key] = true; diff --git a/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch b/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch new file mode 100644 index 00000000000..577786e4fd5 --- /dev/null +++ b/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch @@ -0,0 +1,39 @@ +diff --git a/dist/cjs/document/prepareDocument.js b/dist/cjs/document/prepareDocument.js +index 39a24b8f2ccdc52739d130480ab18975073616cb..0c3f5199401c15b90230c25a02de364eeef3e297 100644 +--- a/dist/cjs/document/prepareDocument.js ++++ b/dist/cjs/document/prepareDocument.js +@@ -30,7 +30,7 @@ function prepareDocument(document) { + const initialValue = UI.getInitialValue(el); + if (initialValue !== undefined) { + if (el.value !== initialValue) { +- dispatchEvent.dispatchDOMEvent(el, 'change'); ++ el.dispatchEvent(new Event('change')); + } + UI.clearInitialValue(el); + } +diff --git a/dist/cjs/event/behavior/keydown.js b/dist/cjs/event/behavior/keydown.js +index 47aaf21bd48856df8bfe88b7509955c5947bf89b..5a5b2030ebbd5b86fb0456597bf13b13902f86cf 100644 +--- a/dist/cjs/event/behavior/keydown.js ++++ b/dist/cjs/event/behavior/keydown.js +@@ -110,7 +110,7 @@ const keydownBehavior = { + }, + Tab: (event, target, instance)=>{ + return ()=>{ +- const dest = getTabDestination.getTabDestination(target, instance.system.keyboard.modifiers.Shift); ++ const dest = getTabDestination.getTabDestination(document.activeElement, instance.system.keyboard.modifiers.Shift); + focus.focusElement(dest); + if (selection.hasOwnSelection(dest)) { + UI.setUISelection(dest, { +diff --git a/dist/cjs/utils/focus/getActiveElement.js b/dist/cjs/utils/focus/getActiveElement.js +index d80eef7fcfe64e66df7e2e1d92d9a4a5dc7b1543..0e3b4181b88426b1947de7d5dbe6a3e977d5b77b 100644 +--- a/dist/cjs/utils/focus/getActiveElement.js ++++ b/dist/cjs/utils/focus/getActiveElement.js +@@ -9,6 +9,8 @@ function getActiveElement(document) { + if (activeElementInShadowTree) { + return activeElementInShadowTree; + } ++ } else if (activeElement && activeElement.tagName === 'IFRAME') { ++ return getActiveElement(activeElement.contentWindow.document); + } + // Browser does not yield disabled elements as document.activeElement - jsdom does + if (isDisabled.isDisabled(activeElement)) { diff --git a/package.json b/package.json index 14441595c00..c95f33fe76f 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch", + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@typescript/native-preview": "^7.0.0-dev.20251223.1", @@ -223,7 +223,7 @@ "@mdx-js/react": "2.0.0-rc.2", "@parcel/packager-react-static": "^2.16.3", "@sinclair/typebox": "0.27.10", - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch", + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch", "@types/node@npm:*": "^24", "@types/node@npm:>= 8": "^24", "@types/node@npm:^18.0.0": "^24", diff --git a/packages/@react-spectrum/ai/package.json b/packages/@react-spectrum/ai/package.json index 4ef1018129f..0b5dd6dd50a 100644 --- a/packages/@react-spectrum/ai/package.json +++ b/packages/@react-spectrum/ai/package.json @@ -58,7 +58,7 @@ "@storybook/jest": "^0.2.3", "@testing-library/dom": "^10.1.0", "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch", + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch", "react": "^19.0.0-rc.1", "react-dom": "^19.0.0-rc.1" }, diff --git a/packages/@react-spectrum/s2/package.json b/packages/@react-spectrum/s2/package.json index 9a0d78f5789..45fdcc3d6ee 100644 --- a/packages/@react-spectrum/s2/package.json +++ b/packages/@react-spectrum/s2/package.json @@ -99,7 +99,7 @@ "@storybook/jest": "^0.2.3", "@testing-library/dom": "^10.1.0", "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch", + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch", "react": "^19.0.0-rc.1", "react-dom": "^19.0.0-rc.1" }, diff --git a/packages/@react-spectrum/test-utils/package.json b/packages/@react-spectrum/test-utils/package.json index 8aec47c68b4..7f490758f2f 100644 --- a/packages/@react-spectrum/test-utils/package.json +++ b/packages/@react-spectrum/test-utils/package.json @@ -34,7 +34,7 @@ "devDependencies": { "@testing-library/dom": "^10.1.0", "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch", + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch", "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" }, diff --git a/packages/dev/test-utils/package.json b/packages/dev/test-utils/package.json index 7b316f61893..96404c9124c 100644 --- a/packages/dev/test-utils/package.json +++ b/packages/dev/test-utils/package.json @@ -30,7 +30,7 @@ "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch", + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch", "jest": "^30.0.0", "react-aria": "^3.47.0", "resolve": "^2.0.0-next.6" diff --git a/yarn.lock b/yarn.lock index 132bdb1a49e..be52a4d5341 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7382,7 +7382,7 @@ __metadata: "@storybook/jest": "npm:^0.2.3" "@testing-library/dom": "npm:^10.1.0" "@testing-library/react": "npm:^16.0.0" - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch" + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch" react: "npm:^19.0.0-rc.1" react-aria: "npm:3.51.0" react-aria-components: "npm:1.20.0" @@ -8120,7 +8120,7 @@ __metadata: "@storybook/jest": "npm:^0.2.3" "@testing-library/dom": "npm:^10.1.0" "@testing-library/react": "npm:^16.0.0" - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch" + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch" react: "npm:^19.0.0-rc.1" react-aria: "npm:3.51.0" react-aria-components: "npm:1.20.0" @@ -8280,7 +8280,7 @@ __metadata: "@testing-library/dom": "npm:^10.1.0" "@testing-library/jest-dom": "npm:^6.0.0" "@testing-library/react": "npm:^16.3.0" - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch" + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch" jest: "npm:^30.0.0" react: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" react-aria: "npm:^3.47.0" @@ -8301,7 +8301,7 @@ __metadata: "@swc/helpers": "npm:^0.5.0" "@testing-library/dom": "npm:^10.1.0" "@testing-library/react": "npm:^16.0.0" - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch" + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch" react: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" react-dom: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" peerDependencies: @@ -10693,21 +10693,21 @@ __metadata: languageName: node linkType: hard -"@testing-library/user-event@npm:14.6.3": - version: 14.6.3 - resolution: "@testing-library/user-event@npm:14.6.3" +"@testing-library/user-event@npm:14.6.4": + version: 14.6.4 + resolution: "@testing-library/user-event@npm:14.6.4" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 10c0/60c401edcc1b39f98aefd0e236af69c1a0454e3a7b91b92d62e2d654b044c51d39abc4a7ee0f5675566e7246dc5fc5e91af872a49da7e30a5f0e9e52f5a83a82 + checksum: 10c0/2460efb88c16ce6e56f64e403cc3e1905d8378a95003933924f31e3c724f5a42dd28d6fe51a9881ecd2e3b5b2e0b12363f3c7a816df90845553180b2a219b647 languageName: node linkType: hard -"@testing-library/user-event@patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch": - version: 14.6.3 - resolution: "@testing-library/user-event@patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch::version=14.6.3&hash=794207" +"@testing-library/user-event@patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch": + version: 14.6.4 + resolution: "@testing-library/user-event@patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch::version=14.6.4&hash=f14f05" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 10c0/636938a4a6ed39eff53c8b44d48719d8b9bae7999fd2253ba0249cc0edaa9f89e01fed7f54857cd8c62eac97e842ea4a4adedc17e0b26fbe91b0e79c2e01fb13 + checksum: 10c0/71759b04dcc9c71a32d14a0ce0821ae2a612b2bb85fd00de35dddfa7e9aeaad6b5e5aadbce831ea59902327a3ec71c951b20b6ee6edea14125cad5d76701021d languageName: node linkType: hard @@ -26590,7 +26590,7 @@ __metadata: "@testing-library/dom": "npm:^10.1.0" "@testing-library/jest-dom": "npm:^6.9.1" "@testing-library/react": "npm:^16.3.0" - "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.3#~/.yarn/patches/@testing-library-user-event-npm-14.6.3-15ecebe390.patch" + "@testing-library/user-event": "patch:@testing-library/user-event@npm%3A14.6.4#~/.yarn/patches/@testing-library-user-event-npm-14.6.4-1532248d3b.patch" "@types/react": "npm:^19.0.0" "@types/react-dom": "npm:^19.0.0" "@typescript/native-preview": "npm:^7.0.0-dev.20251223.1"