vitest-dev/vitest · error
Unable to set breakpoint, CDP not supported
Error message
Unable to set breakpoint, CDP not supported
What it means
Setting a breakpoint requires a CDP session; if the browser provider does not implement getCDPSession, debugger breakpoints are unsupported and Vitest throws before attempting the call. Some browser/provider combos are silently skipped earlier via shouldIgnoreDebugger, but a non-ignored provider without CDP support produces this error.
Solutions
- Switch to a Chromium-based browser with a CDP-capable provider (Playwright).
- Use a provider that implements getCDPSession.
- Disable breakpoints for unsupported browsers, or rely on shouldIgnoreDebugger by using a supported skip combo.
Example fix
// before
export default defineConfig({
test: { browser: { provider: 'webdriverio', instances: [{ browser: 'firefox' }] } }
})
// after - CDP-capable provider/browser
export default defineConfig({
test: { browser: { provider: 'playwright', instances: [{ browser: 'chromium' }] } }
}) Defensive patterns
Strategy: type-guard
Validate before calling
function providerSupportsCDP(provider) {
return typeof provider?.getCDPSession === 'function'
}
// before setting a breakpoint: if (!providerSupportsCDP(provider)) skip breakpoints for that browser Type guard
function hasCDP(provider): provider is { getCDPSession: (id: string) => Promise<{ send: Function }> } {
return provider != null && typeof provider.getCDPSession === 'function'
} Prevention
- Use a Chromium-based browser with a CDP-capable provider (Playwright) for debugging.
- Gate debugger features on hasCDP(provider) before invoking breakpoints.
- Add unsupported browser/provider combos to shouldIgnoreDebugger to skip silently.
When it happens
Trigger: A debugger breakpoint being set against a provider that has no getCDPSession method (and is not in the shouldIgnoreDebugger allowlist), e.g. certain Webdriver-only providers or non-Chromium browsers without CDP.
Common situations: Trying to debug in a browser/provider combination that lacks CDP; using a WebDriverIO provider that doesn't implement getCDPSession; non-Chromium browsers.
Related errors
- Browser provider is not defined for the project
- Cannot use CDP because browser API write or exec operations…
- CDP is not supported by the provider
- Session " " not found.
- Tester RPC " " was not established.
AI-assisted analysis of vitest-dev/vitest@1fa9837ec2 (2026-08-11).
Data as JSON: /api/errors/396169287dc39f27.
Report an issue: GitHub.
Appendix: source
Thrown at packages/vitest/src/node/pools/browser.ts:450
})
}).catch(err => this.reject(err))
}
async setBreakpoint(sessionId: string, file: string) {
if (!this.project.config.inspector.waitForDebugger) {
return
}
const provider = this.project.browser!.provider
const browser = this.project.config.browser.name
if (shouldIgnoreDebugger(provider.name, browser)) {
debug?.('[$s] ignoring debugger in %s browser because it is not supported', sessionId, browser)
return
}
if (!provider.getCDPSession) {
throw new Error('Unable to set breakpoint, CDP not supported')
}
debug?.('[%s] set breakpoint for %s', sessionId, file)
const session = await provider.getCDPSession(sessionId)
await session.send('Debugger.enable', {})
await session.send('Debugger.setBreakpointByUrl', {
lineNumber: 0,
urlRegex: escapePathToRegexp(file),
})
}
}
function shouldIgnoreDebugger(provider: string, browser: string) {
if (provider === 'webdriverio') {
return browser !== 'chrome' && browser !== 'edge'
}
return browser !== 'chromium'
}View on GitHub (pinned to 1fa9837ec2)