Commit 9106d52d110 for woocommerce

commit 9106d52d110dee10f6ef57d5f53f37e64d9be52a
Author: Oleksandr Aratovskyi <79862886+oaratovskyi@users.noreply.github.com>
Date:   Tue Sep 8 15:30:55 2026 +0300

    Fix the mobile keyboard opening on the platform selector (#68258)

    * fix: Keep the mobile keyboard closed on the platform selector

    The core profiler's "Which platform(s) are you currently using?" control
    is a dropdown, not a search field: typing is already blocked by an
    onKeyDown handler, and #52093 hid the caret to match. On touch devices
    focusing it still raised the virtual keyboard, which covered the option
    menu and gave no way out, since "done" does not close a menu the keyboard
    cannot type into.

    Mark the input readonly. Browsers skip the virtual keyboard for readonly
    inputs while leaving them focusable, so the menu still opens on focus and
    selection is unchanged.

    Refs #53136

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01Nt4tKnVFLRUGKMmbmLq75R

    * Clarify the platform selector readonly comment and test name

    Review feedback flagged two places where the readonly change claimed
    more than it showed. The code comment did not mention that #52093 had
    already tried to solve this in CSS, so the new attribute read as an
    isolated change rather than the HTML-level follow-up it is. The test
    name promised that touch devices do not open the keyboard, which jsdom
    cannot observe.

    Point the comment at #52093, and narrow the test name to what it
    actually asserts with a note that the keyboard suppression itself needs
    a physical device.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01CW8QdoLrXs3ckKJ2pnHMEK

    * refactor: Simplify platform selector regression coverage

    ---------

    Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

diff --git a/plugins/woocommerce/changelog/53136-platform-selector-mobile-keyboard b/plugins/woocommerce/changelog/53136-platform-selector-mobile-keyboard
new file mode 100644
index 00000000000..5035673013d
--- /dev/null
+++ b/plugins/woocommerce/changelog/53136-platform-selector-mobile-keyboard
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Stop the virtual keyboard from opening on the core profiler platform selector on touch devices.
diff --git a/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/multiple-selector.tsx b/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/multiple-selector.tsx
index 8012f419315..f55f049026e 100644
--- a/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/multiple-selector.tsx
+++ b/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/multiple-selector.tsx
@@ -41,6 +41,7 @@ export const MultipleSelector = ( {
 			getFilteredItems={ ( allItems ) => allItems }
 			selected={ selectedOptions }
 			inputProps={ {
+				readOnly: true,
 				'aria-readonly': true,
 				'aria-label': __(
 					'Use up and down arrow keys to navigate',
diff --git a/plugins/woocommerce/client/admin/client/core-profiler/pages/test/user-profile.test.tsx b/plugins/woocommerce/client/admin/client/core-profiler/pages/test/user-profile.test.tsx
index fe888367891..75000bcdcdc 100644
--- a/plugins/woocommerce/client/admin/client/core-profiler/pages/test/user-profile.test.tsx
+++ b/plugins/woocommerce/client/admin/client/core-profiler/pages/test/user-profile.test.tsx
@@ -11,6 +11,13 @@ import { UserProfile } from '../UserProfile';
 import { CoreProfilerStateMachineContext } from '../..';

 describe( 'UserProfile', () => {
+	// jsdom does not implement scrollIntoView, which the select control menu
+	// calls when it opens.
+	Object.defineProperty( window.HTMLElement.prototype, 'scrollIntoView', {
+		value: jest.fn(),
+		writable: true,
+	} );
+
 	let props: {
 		sendEvent: jest.Mock;
 		navigationProgress: number;
@@ -85,6 +92,48 @@ describe( 'UserProfile', () => {
 		expect( platformSelector ).toBeInTheDocument();
 	} );

+	it( 'should allow selecting a platform from the read-only selector', () => {
+		render(
+			// @ts-ignore
+			<UserProfile
+				{ ...{
+					...props,
+					context: {
+						userProfile: {
+							businessChoice: 'im_already_selling',
+							sellingOnlineAnswer: 'yes_im_selling_online',
+							sellingPlatforms: null,
+						},
+					},
+				} }
+			/>
+		);
+
+		const platformSelector = screen.getByLabelText(
+			/Use up and down arrow keys to navigate/i
+		);
+		expect( platformSelector ).toHaveAttribute( 'readonly' );
+
+		fireEvent.focus( platformSelector );
+		fireEvent.click( screen.getByText( 'Amazon' ) );
+		screen
+			.getByRole( 'button', {
+				name: /Continue/i,
+			} )
+			.click();
+
+		expect( props.sendEvent ).toHaveBeenCalledWith( {
+			type: 'USER_PROFILE_COMPLETED',
+			payload: {
+				userProfile: {
+					businessChoice: 'im_already_selling',
+					sellingOnlineAnswer: 'yes_im_selling_online',
+					sellingPlatforms: [ 'amazon' ],
+				},
+			},
+		} );
+	} );
+
 	it( 'should call sendEvent with USER_PROFILE_COMPLETED event when button is clicked', () => {
 		render(
 			// @ts-ignore