From a0239d11018b37a02572d7cbf8451f649c1be2d2 Mon Sep 17 00:00:00 2001 From: Jordan Bain Date: Tue, 2 Dec 2025 17:14:51 -0500 Subject: [PATCH 01/14] [Autocomplete] Fix ArrowLeft behavior in multiple mode with input text - Only select chip/value when cursor is at start of input (position 0) - Makes multiple mode consistent with single mode behavior - Fixes #47241 --- .../src/useAutocomplete/useAutocomplete.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index 7c8116dd6baf33..502cc8e2398bf9 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -748,14 +748,14 @@ function useAutocomplete(props) { return; } - if (inputValue === '') { + if (inputValue === '' || inputRef.current.selectionStart === 0) { handleClose(event, 'toggleInput'); } let nextItem = focusedItem; if (focusedItem === -1) { - if (inputValue === '' && direction === 'previous') { + if ((inputValue === '' || inputRef.current.selectionStart === 0) && direction === 'previous') { nextItem = value.length - 1; } } else { @@ -853,10 +853,12 @@ function useAutocomplete(props) { handleOpen(event); break; case 'ArrowLeft': - if (!multiple && renderValue && value != null) { - focusItem(0); - } else { - handleFocusItem(event, 'previous'); + if (inputRef.current && inputRef.current.selectionStart === 0) { + if (!multiple && value != null) { + focusItem(renderValue ? 0 : -1); + } else if (multiple && value && value.length > 0) { + handleFocusItem(event, 'previous'); + } } break; case 'ArrowRight': From 1be6bb9df7a9e4d2dfb18a14714ff6bd9f9218c8 Mon Sep 17 00:00:00 2001 From: Jordan Bain Date: Tue, 2 Dec 2025 21:35:38 -0500 Subject: [PATCH 02/14] Merge upstream/master and apply prettier formatting --- packages/mui-material/src/useAutocomplete/useAutocomplete.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index 354a0d4daab706..a3d1814f0a32ad 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -754,7 +754,10 @@ function useAutocomplete(props) { let nextItem = focusedItem; if (focusedItem === -1) { - if ((inputValue === '' || inputRef.current.selectionStart === 0) && direction === 'previous') { + if ( + (inputValue === '' || inputRef.current.selectionStart === 0) && + direction === 'previous' + ) { nextItem = value.length - 1; } } else { From 8c913753c50ba7df096d700ae499b299c369ce79 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Thu, 4 Dec 2025 20:44:47 +0530 Subject: [PATCH 03/14] Fix logic --- .../src/useAutocomplete/useAutocomplete.js | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index a3d1814f0a32ad..40b57453e1baa4 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -747,19 +747,14 @@ function useAutocomplete(props) { return; } - if (inputValue === '' || inputRef.current.selectionStart === 0) { + if (inputValue === '') { handleClose(event, 'toggleInput'); } let nextItem = focusedItem; - if (focusedItem === -1) { - if ( - (inputValue === '' || inputRef.current.selectionStart === 0) && - direction === 'previous' - ) { - nextItem = value.length - 1; - } + if (focusedItem === -1 && direction === 'previous') { + nextItem = value.length - 1; } else { nextItem += direction === 'next' ? 1 : -1; @@ -854,15 +849,22 @@ function useAutocomplete(props) { changeHighlightedIndex({ diff: -1, direction: 'previous', reason: 'keyboard', event }); handleOpen(event); break; - case 'ArrowLeft': - if (inputRef.current && inputRef.current.selectionStart === 0) { - if (!multiple && value != null) { - focusItem(renderValue ? 0 : -1); - } else if (multiple && value && value.length > 0) { - handleFocusItem(event, 'previous'); - } + case 'ArrowLeft': { + const input = inputRef.current; + const caretAtStart = input && input.selectionStart === 0 && input.selectionEnd === 0; + + if (!caretAtStart) { + // Let the browser handle normal cursor movement + return; + } + + if (!multiple && value != null) { + focusItem(renderValue ? 0 : -1); + } else if (multiple && value && value.length > 0) { + handleFocusItem(event, 'previous'); } break; + } case 'ArrowRight': if (!multiple && renderValue) { setFocusedItem(-1); From 5cf6bb0c789fb3e6a5af04d79d42b94cf1b33b97 Mon Sep 17 00:00:00 2001 From: Jordan Bain Date: Thu, 4 Dec 2025 12:34:19 -0500 Subject: [PATCH 04/14] Close dropdown when focusing chip with ArrowLeft --- packages/mui-material/src/useAutocomplete/useAutocomplete.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index a3d1814f0a32ad..d54c5a88d4d0b1 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -858,8 +858,10 @@ function useAutocomplete(props) { if (inputRef.current && inputRef.current.selectionStart === 0) { if (!multiple && value != null) { focusItem(renderValue ? 0 : -1); + handleClose(event, 'toggleInput'); } else if (multiple && value && value.length > 0) { handleFocusItem(event, 'previous'); + handleClose(event, 'toggleInput'); } } break; From e1606ecdfe6e442b12399554c45b449f862b6419 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Fri, 5 Dec 2025 11:07:39 +0530 Subject: [PATCH 05/14] fix code --- .../mui-material/src/useAutocomplete/useAutocomplete.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index 40b57453e1baa4..bda0a8a924e38c 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -858,9 +858,10 @@ function useAutocomplete(props) { return; } - if (!multiple && value != null) { - focusItem(renderValue ? 0 : -1); - } else if (multiple && value && value.length > 0) { + if (!multiple && renderValue && value != null) { + setFocusedItem(0); + focusItem(0); + } else { handleFocusItem(event, 'previous'); } break; From a733c75419f825f2b0dba93d85ba7d6635859f89 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Fri, 5 Dec 2025 17:40:15 +0530 Subject: [PATCH 06/14] fix Backspace keydown in single value rendering --- packages/mui-material/src/useAutocomplete/useAutocomplete.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index bda0a8a924e38c..ea1170dd6fba63 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -931,7 +931,7 @@ function useAutocomplete(props) { option: value[index], }); } - if (!multiple && renderValue && !readOnly) { + if (!multiple && renderValue && !readOnly && inputValue === '') { setValueState(null); setFocusedItem(-1); focusItem(-1); @@ -1016,7 +1016,7 @@ function useAutocomplete(props) { } if (newValue === '') { - if (!disableClearable && !multiple) { + if (!disableClearable && !multiple && !renderValue) { handleValue(event, null, 'clear'); } } else { From 290fa1007636eab9fc7315747f9cd4a49c633b65 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Fri, 5 Dec 2025 17:53:26 +0530 Subject: [PATCH 07/14] Fix Delete logic in single value rendering --- packages/mui-material/src/useAutocomplete/useAutocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index ea1170dd6fba63..d9358f3ccf6f29 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -953,7 +953,7 @@ function useAutocomplete(props) { option: value[index], }); } - if (!multiple && renderValue && !readOnly) { + if (!multiple && renderValue && !readOnly && inputValue === '') { setValueState(null); setFocusedItem(-1); focusItem(-1); From 1d14fde32b775f1340eae3a5212ec12a0bbec136 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Fri, 5 Dec 2025 19:07:18 +0530 Subject: [PATCH 08/14] ensure removeOption is called in single value rendering when pressing Backspace and Delete --- .../mui-material/src/useAutocomplete/useAutocomplete.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index d9358f3ccf6f29..d2e8215a15942e 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -932,9 +932,7 @@ function useAutocomplete(props) { }); } if (!multiple && renderValue && !readOnly && inputValue === '') { - setValueState(null); - setFocusedItem(-1); - focusItem(-1); + handleValue(event, null, 'removeOption', { option: value }); } break; case 'Delete': @@ -954,9 +952,7 @@ function useAutocomplete(props) { }); } if (!multiple && renderValue && !readOnly && inputValue === '') { - setValueState(null); - setFocusedItem(-1); - focusItem(-1); + handleValue(event, null, 'removeOption', { option: value }); } break; default: From cdc3736359ed37f1f19e3df14b525d2e21b0d005 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Sat, 6 Dec 2025 11:03:24 +0530 Subject: [PATCH 09/14] add code comments --- .../src/useAutocomplete/useAutocomplete.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index d2e8215a15942e..708544403190f6 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -753,6 +753,8 @@ function useAutocomplete(props) { let nextItem = focusedItem; + // When moving focus from the input to tags with ArrowLeft, + // always jump to the last tag (if any) from the input. if (focusedItem === -1 && direction === 'previous') { nextItem = value.length - 1; } else { @@ -851,6 +853,8 @@ function useAutocomplete(props) { break; case 'ArrowLeft': { const input = inputRef.current; + // Only handle ArrowLeft when the caret is at the start of the input. + // Otherwise let the browser move the caret normally. const caretAtStart = input && input.selectionStart === 0 && input.selectionEnd === 0; if (!caretAtStart) { @@ -859,9 +863,11 @@ function useAutocomplete(props) { } if (!multiple && renderValue && value != null) { + // Single-value rendering: move focus from input to the single tag. setFocusedItem(0); focusItem(0); } else { + // Multi-value: delegate to tag navigation helper. handleFocusItem(event, 'previous'); } break; @@ -952,6 +958,8 @@ function useAutocomplete(props) { }); } if (!multiple && renderValue && !readOnly && inputValue === '') { + // Single-value rendering: Delete on empty input removes + // the single rendered option, same "removeOption" reason as multiple. handleValue(event, null, 'removeOption', { option: value }); } break; @@ -1012,6 +1020,8 @@ function useAutocomplete(props) { } if (newValue === '') { + // For normal single-select, clearing the input clears the value. + // For renderValue (chip-style single), only Backspace/Delete clear the value. if (!disableClearable && !multiple && !renderValue) { handleValue(event, null, 'clear'); } From 3d3a7b35f801d96add3430ddacd84a7b30fcc172 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Sat, 6 Dec 2025 11:57:52 +0530 Subject: [PATCH 10/14] Add tests with ArrowLeft --- .../src/Autocomplete/Autocomplete.test.js | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js index 4dbfcc0d7b29af..7a1e1adf950977 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js @@ -871,6 +871,39 @@ describe('', () => { expect(handleSubmit.callCount).to.equal(0); }, ); + + it('should move focus to the last chip with ArrowLeft only when caret is at the start when multiple', () => { + const options = ['one', 'two', 'three']; + render( + } + />, + ); + + const textbox = screen.getByRole('combobox'); + const chipOne = screen.queryByText('one').parentElement; + const chipTwo = screen.queryByText('two').parentElement; + + // Type something so the input has content. + fireEvent.change(textbox, { target: { value: 'foo' } }); + + // Caret not at start: ArrowLeft should just move the caret, not focus the chip. + textbox.setSelectionRange(2, 2); + fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); + expect(textbox).toHaveFocus(); + + // Caret at start: ArrowLeft should now move focus to the second chip. + textbox.setSelectionRange(0, 0); + fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); + expect(chipTwo).toHaveFocus(); + + // ArrowLeft should now move focus to the first chip. + fireEvent.keyDown(chipTwo, { key: 'ArrowLeft' }); + expect(chipOne).toHaveFocus(); + }); }); it('should trigger a form expectedly', () => { @@ -3750,6 +3783,34 @@ describe('', () => { expect(textbox).to.have.property('value', 'on'); expect(textbox).toHaveFocus(); }); + + it('should move focus to the rendered value with ArrowLeft only when caret is at the start', () => { + const options = ['one', 'two']; + const view = render( + } + renderInput={(params) => } + />, + ); + + const textbox = screen.getByRole('combobox'); + const chip = view.container.querySelector(`.${chipClasses.root}`); + + // Type something so the input has content. + fireEvent.change(textbox, { target: { value: 'foo' } }); + + // Caret not at start: ArrowLeft should just move the caret, not focus the chip. + textbox.setSelectionRange(2, 2); + fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); + expect(textbox).toHaveFocus(); + + // Caret at start: ArrowLeft should now move focus to the rendered value. + textbox.setSelectionRange(0, 0); + fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); + expect(chip).toHaveFocus(); + }); }); it('should not shrink the input label when value is an empty array in multiple mode using renderValue', () => { From 7da04ae74e9bd154465e5672771ba35d756ae240 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Sat, 6 Dec 2025 12:58:28 +0530 Subject: [PATCH 11/14] Modify Backspace and Delete tests --- .../src/Autocomplete/Autocomplete.test.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js index 7a1e1adf950977..ec8601b3395331 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js @@ -3633,11 +3633,13 @@ describe('', () => { expect(view.container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(1); }); - it('should delete using Backspace key', () => { + it('should delete using Backspace key with empty input text', () => { + const handleChange = spy(); const view = render( { return ; }} @@ -3651,14 +3653,21 @@ describe('', () => { fireEvent.keyDown(textbox, { key: 'Backspace' }); + expect(handleChange.callCount).to.equal(1); + expect(handleChange.args[0][1]).to.equal(null); + expect(handleChange.args[0][2]).to.equal('removeOption'); + expect(handleChange.args[0][3]).to.deep.equal({ option: 'one' }); + expect(view.container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(0); }); - it('should delete using Delete key', () => { + it('should delete using Delete key with empty input text', () => { + const handleChange = spy(); const view = render( { return ; }} @@ -3672,6 +3681,11 @@ describe('', () => { fireEvent.keyDown(textbox, { key: 'Delete' }); + expect(handleChange.callCount).to.equal(1); + expect(handleChange.args[0][1]).to.equal(null); + expect(handleChange.args[0][2]).to.equal('removeOption'); + expect(handleChange.args[0][3]).to.deep.equal({ option: 'one' }); + expect(view.container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(0); }); From df22a420a3d3a2ba7b2fe9cf403da669cffb4fd7 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Mon, 8 Dec 2025 11:20:49 +0530 Subject: [PATCH 12/14] fix input text is not cleared when doing arrowLeft when freeSolo --- .../src/Autocomplete/Autocomplete.test.js | 67 +++++++++++++++++++ .../src/useAutocomplete/useAutocomplete.js | 17 ++++- 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js index ec8601b3395331..01c85d8f76a2b1 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js @@ -904,6 +904,40 @@ describe('', () => { fireEvent.keyDown(chipTwo, { key: 'ArrowLeft' }); expect(chipOne).toHaveFocus(); }); + + it('should clear freeSolo input when moving focus from input to chip with ArrowLeft and not restore it on ArrowRight', () => { + const options = ['one', 'two']; + render( + } + />, + ); + + const textbox = screen.getByRole('combobox'); + const chips = screen.getAllByRole('button'); // chips for "one" and "two" + const lastChip = chips[chips.length - 1]; + + // Type some freeSolo text + fireEvent.change(textbox, { target: { value: 'foo' } }); + expect(textbox).to.have.property('value', 'foo'); + + // Caret at start: ArrowLeft should move focus to the last chip + textbox.setSelectionRange(0, 0); + fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); + expect(lastChip).toHaveFocus(); + + // Input text should be cleared and stay cleared + expect(textbox).to.have.property('value', ''); + + // ArrowRight should move focus back to the input, without restoring the old text + fireEvent.keyDown(lastChip, { key: 'ArrowRight' }); + expect(textbox).toHaveFocus(); + expect(textbox).to.have.property('value', ''); + }); }); it('should trigger a form expectedly', () => { @@ -3825,6 +3859,39 @@ describe('', () => { fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); expect(chip).toHaveFocus(); }); + + it('should clear freeSolo input when moving focus to the rendered value with ArrowLeft and not restore it on ArrowRight', () => { + const options = ['one', 'two']; + render( + } + renderInput={(params) => } + />, + ); + + const textbox = screen.getByRole('combobox'); + const chip = screen.getByRole('button', { name: 'one' }); + + // Type some freeSolo text + fireEvent.change(textbox, { target: { value: 'foo' } }); + expect(textbox).to.have.property('value', 'foo'); + + // Caret at start: ArrowLeft should move focus to the rendered value + textbox.setSelectionRange(0, 0); + fireEvent.keyDown(textbox, { key: 'ArrowLeft' }); + expect(chip).toHaveFocus(); + + // Input text should be cleared + expect(textbox).to.have.property('value', ''); + + // ArrowRight should move focus back to input without restoring text + fireEvent.keyDown(chip, { key: 'ArrowRight' }); + expect(textbox).toHaveFocus(); + expect(textbox).to.have.property('value', ''); + }); }); it('should not shrink the input label when value is an empty array in multiple mode using renderValue', () => { diff --git a/packages/mui-material/src/useAutocomplete/useAutocomplete.js b/packages/mui-material/src/useAutocomplete/useAutocomplete.js index 708544403190f6..06c6a0b6669f13 100644 --- a/packages/mui-material/src/useAutocomplete/useAutocomplete.js +++ b/packages/mui-material/src/useAutocomplete/useAutocomplete.js @@ -757,6 +757,13 @@ function useAutocomplete(props) { // always jump to the last tag (if any) from the input. if (focusedItem === -1 && direction === 'previous') { nextItem = value.length - 1; + // In freeSolo, clear any draft text so it doesn't "come back" later. + if (freeSolo && inputValue !== '') { + setInputValueState(''); + if (onInputChange) { + onInputChange(event, '', 'reset'); + } + } } else { nextItem += direction === 'next' ? 1 : -1; @@ -862,8 +869,16 @@ function useAutocomplete(props) { return; } + // Single-value rendering: move focus from input to the single tag. if (!multiple && renderValue && value != null) { - // Single-value rendering: move focus from input to the single tag. + // Moving from input to single tag; clear freeSolo draft text, + // so it doesn't reappear when we move back. + if (freeSolo && inputValue !== '') { + setInputValueState(''); + if (onInputChange) { + onInputChange(event, '', 'reset'); + } + } setFocusedItem(0); focusItem(0); } else { From 5c4266001165e9e18807aab8dd0e6d77dafd450d Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Mon, 8 Dec 2025 11:30:27 +0530 Subject: [PATCH 13/14] modify query --- packages/mui-material/src/Autocomplete/Autocomplete.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js index 01c85d8f76a2b1..a0eb05392807bb 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js @@ -884,8 +884,7 @@ describe('', () => { ); const textbox = screen.getByRole('combobox'); - const chipOne = screen.queryByText('one').parentElement; - const chipTwo = screen.queryByText('two').parentElement; + const [chipOne, chipTwo] = screen.getAllByRole('button'); // Type something so the input has content. fireEvent.change(textbox, { target: { value: 'foo' } }); From 60afc1f71cdeaf9c531e63474631900e741ed1e1 Mon Sep 17 00:00:00 2001 From: ZeeshanTamboli Date: Mon, 8 Dec 2025 12:18:51 +0530 Subject: [PATCH 14/14] fix querying last chip --- packages/mui-material/src/Autocomplete/Autocomplete.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js index a0eb05392807bb..398966c6f896b8 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js +++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js @@ -917,8 +917,7 @@ describe('', () => { ); const textbox = screen.getByRole('combobox'); - const chips = screen.getAllByRole('button'); // chips for "one" and "two" - const lastChip = chips[chips.length - 1]; + const lastChip = screen.getByRole('button', { name: 'two' }); // Type some freeSolo text fireEvent.change(textbox, { target: { value: 'foo' } });