jackwener/OpenCLI · error
browser ${checked ? 'check' : 'uncheck'} is not supported by
Error message
browser ${checked ? 'check' : 'uncheck'} is not supported by this browser backend What it means
Shared handler for `browser check` and `browser uncheck`; it feature-detects `page.setChecked` and throws a command-specific capability error when the backend lacks checkbox toggling support. The message names the exact command (check or uncheck) based on the `checked` flag.
Source
Thrown at src/cli.ts:2166
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> => {
if (typeof page.setChecked !== 'function') throw new Error(`browser ${checked ? 'check' : 'uncheck'} 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 result = await page.setChecked(resolvedTarget, checked, parsed.opts);
console.log(JSON.stringify({
checked: result.checked,
changed: result.changed,
target: resolvedTarget,
matches_n: result.matches_n,
match_level: result.match_level,
...(result.kind ? { kind: result.kind } : {}),
}, null, 2));
};View on GitHub (pinned to 49907e53dc)
Solutions
- Switch to a backend implementing setChecked (Playwright/Puppeteer-based).
- Use `browser click` on the checkbox as a fallback, or `browser eval` setting `element.checked` and dispatching change.
- Confirm the backend config selects a driver that supports form control helpers.
Example fix
// before browser --backend minimal check 'input[type=checkbox]' // after browser --backend playwright check 'input[type=checkbox]'
Defensive patterns
Strategy: type-guard
Validate before calling
const page = await getBrowserPage();
if (typeof page.setChecked !== 'function') {
throw new Error('Current backend cannot check/uncheck controls');
} Type guard
function supportsSetChecked(page) {
return typeof page?.setChecked === 'function';
} Try / catch
try {
await run(['browser', 'check', sel]);
} catch (err) {
if (String(err.message).includes('is not supported by this browser backend')) {
await run(['browser', 'click', sel]);
} else throw err;
} Prevention
- Feature-detect setChecked before check/uncheck.
- Fall back to click on checkboxes/toggles when the backend lacks setChecked.
- Standardize on one backend per test suite.
- Verify form-control support when adding a new backend.
When it happens
Trigger: Running `browser check <target>` or `browser uncheck <target>` on a backend whose page object has no `setChecked` method.
Common situations: Minimal browser drivers without form-control helpers; automation adapters that expose click but not check/uncheck semantics.
Related errors
- browser hover is not supported by this browser backend
- browser focus is not supported by this browser backend
- browser dblclick is not supported by this browser backend
- 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/50570c5612b3adef.
Report an issue: GitHub.