diff --git a/src/cli/browser-empty-values.test.ts b/src/cli/browser-empty-values.test.ts index 5928f8c0200..53cc1badfdc 100644 --- a/src/cli/browser-empty-values.test.ts +++ b/src/cli/browser-empty-values.test.ts @@ -208,3 +208,34 @@ describe('orca cli cookie set and set credentials preserve an empty value', () = process.exitCode = priorExitCode }) }) + +describe('orca cli fill and select preserve an empty value', () => { + beforeEach(() => { + callMock.mockReset() + process.exitCode = undefined + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + it.each([ + ['fill', 'browser.fill', { filled: 'ref_1' }], + ['select', 'browser.select', { selected: 'ref_1' }] + ])('passes an empty --value through %s to %s', async (command, method, result) => { + queueFixtures(callMock, okFixture(`req_${command}`, result)) + vi.spyOn(console, 'log').mockImplementation(() => {}) + + await main( + [command, '--element', 'ref_1', '--value', '', '--worktree', 'all', '--json'], + '/tmp/not-an-orca-worktree' + ) + + expect(callMock).toHaveBeenCalledTimes(1) + expect(callMock).toHaveBeenCalledWith(method, { + element: 'ref_1', + value: '', + worktree: undefined + }) + }) +}) diff --git a/src/cli/handlers/browser-interact.ts b/src/cli/handlers/browser-interact.ts index 0274f40286b..7331b59d14c 100644 --- a/src/cli/handlers/browser-interact.ts +++ b/src/cli/handlers/browser-interact.ts @@ -18,7 +18,8 @@ import { getOptionalNumberFlag, getOptionalStringFlag, getRequiredFiniteNumber, - getRequiredStringFlag + getRequiredStringFlag, + getRequiredStringFlagAllowingEmpty } from '../flags' import { getBrowserCommandTarget } from '../selectors' @@ -50,7 +51,7 @@ export const BROWSER_INTERACT_HANDLERS: Record = { }, fill: async ({ flags, client, cwd, json }) => { const element = getRequiredStringFlag(flags, 'element') - const value = getRequiredStringFlag(flags, 'value') + const value = getRequiredStringFlagAllowingEmpty(flags, 'value') const target = await getBrowserCommandTarget(flags, cwd, client) const result = await client.call('browser.fill', { element, @@ -67,7 +68,7 @@ export const BROWSER_INTERACT_HANDLERS: Record = { }, select: async ({ flags, client, cwd, json }) => { const element = getRequiredStringFlag(flags, 'element') - const value = getRequiredStringFlag(flags, 'value') + const value = getRequiredStringFlagAllowingEmpty(flags, 'value') const target = await getBrowserCommandTarget(flags, cwd, client) const result = await client.call('browser.select', { element,