jackwener/OpenCLI · error
browser dblclick is not supported by this browser backend
Error message
browser dblclick is not supported by this browser backend
What it means
The `browser dblclick` command checks `typeof page.dblClick === 'function'` before running; backends without double-click support throw this capability error. It prevents a TypeError and gives a clear message that the backend cannot perform double-clicks.
Source
Thrown at src/cli.ts:2147
if (!resolvedTarget) return;
const parsed = nthToResolveOpts(opts?.nth);
if ('error' in parsed) {
console.log(JSON.stringify({ error: { code: 'usage_error', message: parsed.error } }, null, 2));
process.exitCode = EXIT_CODES.USAGE_ERROR;
return;
}
const { focused, matches_n, match_level } = await page.focus(resolvedTarget, parsed.opts);
console.log(JSON.stringify({ focused, target: resolvedTarget, matches_n, match_level }, null, 2));
}));
addBrowserTabOption(
addSemanticLocatorOptions(browser.command('dblclick'))
.argument('[target]', 'Numeric ref (from browser state / find), CSS selector, or omit when using --role/--name/etc.')
.option('--nth <n>', 'When <target> is a multi-match CSS selector, pick the nth match (0-based)')
.description('Double-click element — JSON envelope {dblclicked, target, matches_n}'),
)
.action(browserAction(async (page, target, opts) => {
if (typeof page.dblClick !== 'function') throw new Error('browser dblclick is not supported by this browser backend');
const resolvedTarget = await resolveWriteTargetOrPrint(page, target, opts ?? {});
if (!resolvedTarget) return;
const parsed = nthToResolveOpts(opts?.nth);
if ('error' in parsed) {
console.log(JSON.stringify({ error: { code: 'usage_error', message: parsed.error } }, null, 2));
process.exitCode = EXIT_CODES.USAGE_ERROR;
return;
}
const { matches_n, match_level } = await page.dblClick(resolvedTarget, parsed.opts);
console.log(JSON.stringify({ dblclicked: true, target: resolvedTarget, matches_n, match_level }, null, 2));
}));
const runCheckCommand = async (
page: Awaited<ReturnType<typeof getBrowserPage>>,
target: unknown,
opts: Record<string, unknown>,
checked: boolean,
): Promise<void> => {View on GitHub (pinned to 49907e53dc)
Solutions
- Use a full-featured backend (Playwright/Puppeteer) that implements dblClick.
- Emulate with `browser eval` dispatching two click events or a dblclick event.
- Update the backend adapter/driver to a version supporting dblClick.
Example fix
// before browser --backend minimal dblclick '.row' // after browser --backend playwright dblclick '.row'
Defensive patterns
Strategy: type-guard
Validate before calling
const page = await getBrowserPage();
if (typeof page.dblClick !== 'function') {
throw new Error('Current backend cannot double-click');
} Type guard
function supportsDblClick(page) {
return typeof page?.dblClick === 'function';
} Try / catch
try {
await run(['browser', 'dblclick', sel]);
} catch (err) {
if (String(err.message).includes('dblclick is not supported')) {
await run(['browser', 'eval', `const el=document.querySelector('${sel}'); el.dispatchEvent(new MouseEvent('dblclick',{bubbles:true}))`]);
} else throw err;
} Prevention
- Feature-detect dblClick before use.
- Avoid minimal drivers for interaction-heavy scripts.
- Centralize backend capability checks in one helper.
- Test scripts against the target backend in CI.
When it happens
Trigger: Running `browser dblclick [target]` on a browser backend that does not implement `page.dblClick`.
Common situations: Using lightweight or custom browser drivers that only expose click/evaluate; older backend versions predating dblClick support in the adapter.
Related errors
- browser hover is not supported by this browser backend
- browser focus is not supported by this browser backend
- browser ${checked ? 'check' : 'uncheck'} is not supported by
- browser upload is not supported by this browser backend
- browser drag is not supported by this browser backend
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/d51084320a603d2e.
Report an issue: GitHub.