diff --git a/packages/playwright-core/src/server/injected/recorder.ts b/packages/playwright-core/src/server/injected/recorder.ts
index 639d004834..924fbf73ff 100644
--- a/packages/playwright-core/src/server/injected/recorder.ts
+++ b/packages/playwright-core/src/server/injected/recorder.ts
@@ -196,7 +196,7 @@ class Recorder {
return true;
}
const nodeName = target.nodeName;
- if (nodeName === 'SELECT')
+ if (nodeName === 'SELECT' || nodeName === 'OPTION')
return true;
if (nodeName === 'INPUT' && ['date'].includes((target as HTMLInputElement).type))
return true;
diff --git a/tests/library/inspector/cli-codegen-1.spec.ts b/tests/library/inspector/cli-codegen-1.spec.ts
index cc5b77cf89..340306949a 100644
--- a/tests/library/inspector/cli-codegen-1.spec.ts
+++ b/tests/library/inspector/cli-codegen-1.spec.ts
@@ -532,6 +532,47 @@ test.describe('cli codegen', () => {
expect(message.text()).toBe('2');
});
+ test('should select with size attribute', async ({ page, openRecorder }) => {
+ const recorder = await openRecorder();
+
+ await recorder.setContentAndWait(`
+
+
+ `);
+
+ const locator = await recorder.hoverOverElement('select');
+ expect(locator).toBe(`locator('#age')`);
+ const [message, sources] = await Promise.all([
+ page.waitForEvent('console', msg => msg.type() !== 'error'),
+ recorder.waitForOutput('JavaScript', 'select'),
+ page.mouse.click(10, 25)
+ ]);
+
+ expect(sources.get('JavaScript').text).toContain(`
+ await page.locator('#age').selectOption('2');`);
+
+ expect(sources.get('Java').text).toContain(`
+ page.locator("#age").selectOption("2");`);
+
+ expect(sources.get('Python').text).toContain(`
+ page.locator(\"#age\").select_option(\"2\")`);
+
+ expect(sources.get('Python Async').text).toContain(`
+ await page.locator(\"#age\").select_option(\"2\")`);
+
+ expect(sources.get('C#').text).toContain(`
+ await page.Locator(\"#age\").SelectOptionAsync(new[] { \"2\" });`);
+
+ expect(message.text()).toBe('2');
+ });
+
test('should await popup', async ({ page, openRecorder, browserName, headless }) => {
test.fixme(browserName === 'webkit' && !headless, 'Middle click does not open a popup in our webkit embedder');