{"record":{"id":"d51084320a603d2e","repo":"jackwener/OpenCLI","slug":"browser-dblclick-is-not-supported-by-this-browser","errorCode":null,"errorMessage":"browser dblclick is not supported by this browser backend","messagePattern":"browser dblclick is not supported by this browser backend","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli.ts","lineNumber":2147,"sourceCode":"      if (!resolvedTarget) return;\n      const parsed = nthToResolveOpts(opts?.nth);\n      if ('error' in parsed) {\n        console.log(JSON.stringify({ error: { code: 'usage_error', message: parsed.error } }, null, 2));\n        process.exitCode = EXIT_CODES.USAGE_ERROR;\n        return;\n      }\n      const { focused, matches_n, match_level } = await page.focus(resolvedTarget, parsed.opts);\n      console.log(JSON.stringify({ focused, target: resolvedTarget, matches_n, match_level }, null, 2));\n    }));\n\n  addBrowserTabOption(\n    addSemanticLocatorOptions(browser.command('dblclick'))\n      .argument('[target]', 'Numeric ref (from browser state / find), CSS selector, or omit when using --role/--name/etc.')\n      .option('--nth <n>', 'When <target> is a multi-match CSS selector, pick the nth match (0-based)')\n      .description('Double-click element — JSON envelope {dblclicked, target, matches_n}'),\n  )\n    .action(browserAction(async (page, target, opts) => {\n      if (typeof page.dblClick !== 'function') throw new Error('browser dblclick is not supported by this browser backend');\n      const resolvedTarget = await resolveWriteTargetOrPrint(page, target, opts ?? {});\n      if (!resolvedTarget) return;\n      const parsed = nthToResolveOpts(opts?.nth);\n      if ('error' in parsed) {\n        console.log(JSON.stringify({ error: { code: 'usage_error', message: parsed.error } }, null, 2));\n        process.exitCode = EXIT_CODES.USAGE_ERROR;\n        return;\n      }\n      const { matches_n, match_level } = await page.dblClick(resolvedTarget, parsed.opts);\n      console.log(JSON.stringify({ dblclicked: true, target: resolvedTarget, matches_n, match_level }, null, 2));\n    }));\n\n  const runCheckCommand = async (\n    page: Awaited<ReturnType<typeof getBrowserPage>>,\n    target: unknown,\n    opts: Record<string, unknown>,\n    checked: boolean,\n  ): Promise<void> => {","sourceCodeStart":2129,"sourceCodeEnd":2165,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/src/cli.ts#L2129-L2165","documentation":"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.","triggerScenarios":"Running `browser dblclick [target]` on a browser backend that does not implement `page.dblClick`.","commonSituations":"Using lightweight or custom browser drivers that only expose click/evaluate; older backend versions predating dblClick support in the adapter.","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."],"exampleFix":"// before\nbrowser --backend minimal dblclick '.row'\n// after\nbrowser --backend playwright dblclick '.row'","handlingStrategy":"type-guard","validationCode":"const page = await getBrowserPage();\nif (typeof page.dblClick !== 'function') {\n  throw new Error('Current backend cannot double-click');\n}","typeGuard":"function supportsDblClick(page) {\n  return typeof page?.dblClick === 'function';\n}","tryCatchPattern":"try {\n  await run(['browser', 'dblclick', sel]);\n} catch (err) {\n  if (String(err.message).includes('dblclick is not supported')) {\n    await run(['browser', 'eval', `const el=document.querySelector('${sel}'); el.dispatchEvent(new MouseEvent('dblclick',{bubbles:true}))`]);\n  } else throw err;\n}","preventionTips":["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."],"tags":["browser","cli","capability"],"backgroundTag":"unsupported-browser-capability","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}