{"record":{"id":"35124b6fcf98922a","repo":"vitest-dev/vitest","slug":"name-browser-browser-is-not-supported-by-th","errorCode":null,"errorMessage":"${name}Browser \"${browser}\" is not supported by the browser provider \"${options.provider.name}\". Supported browsers: ${supportedBrowsers.join(', ')}.","messagePattern":"(.+?)Browser \"(.+?)\" is not supported by the browser provider \"(.+?)\"\\. Supported browsers: (.+?)\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser/src/node/utils.ts","lineNumber":84,"sourceCode":"}\n\nexport async function getBrowserProvider(\n  options: ResolvedBrowserOptions,\n  project: TestProject,\n): Promise<BrowserProvider> {\n  const browser = project.config.browser.name\n  const name = project.name ? `[${project.name}] ` : ''\n  if (!browser) {\n    throw new Error(\n      `${name}Browser name is required. Please, set \\`test.browser.instances[].browser\\` option manually.`,\n    )\n  }\n  if (options.provider == null) {\n    throw new Error(`Browser Mode requires the \"provider\" to always be specified.`)\n  }\n  const supportedBrowsers = options.provider.supportedBrowser || []\n  if (supportedBrowsers.length && !supportedBrowsers.includes(browser)) {\n    throw new Error(\n      `${name}Browser \"${browser}\" is not supported by the browser provider \"${\n        options.provider.name\n      }\". Supported browsers: ${supportedBrowsers.join(', ')}.`,\n    )\n  }\n  if (typeof options.provider.providerFactory !== 'function') {\n    throw new TypeError(`The \"${name}\" browser provider does not provide a \"providerFactory\" function. Received ${typeof options.provider.providerFactory}.`)\n  }\n  return options.provider.providerFactory(project)\n}\n\nexport function slash(path: string): string {\n  return path.replace(/\\\\/g, '/').replace(/\\/+/g, '/')\n}\n\nexport function assertBrowserFileAccess(project: TestProject, path: string): void {\n  const normalized = slash(path)\n  if (","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/vitest-dev/vitest/blob/1fa9837ec26533512fdcad8baebf249771bd340a/packages/browser/src/node/utils.ts#L66-L102","documentation":"Thrown when the configured browser name (e.g. \"firefox\") is not in the resolved provider's supportedBrowser list. Each provider declares which browser engines it can drive; asking for one it cannot yields this error with the exact list of accepted names.","triggerScenarios":"getBrowserProvider reaches the supportedBrowsers check after options.provider is set, and project.config.browser.name (e.g. 'safari', 'edge') is not included in options.provider.supportedBrowser.","commonSituations":"Typo in the browser name; using playwright's name with the webdriverio provider or vice-versa; requesting 'safari' (not supported) instead of 'webkit'; case mismatch like 'Chromium' vs 'chromium'.","solutions":["Read the 'Supported browsers:' list in the error message and set test.browser.instances[].browser (or test.browser.name) to one of those exact strings.","Confirm the provider matches the engine family — playwright supports chromium/firefox/webkit; webdriverio supports a different set.","If you need a browser the provider lacks, switch the provider field to one that supports it."],"exampleFix":"// before\nexport default defineConfig({ test: { browser: { name: 'safari', provider: 'playwright' } } })\n// after\nexport default defineConfig({ test: { browser: { name: 'webkit', provider: 'playwright' } } })","handlingStrategy":"validation","validationCode":"const PLAYWRIGHT_BROWSERS = ['chromium', 'firefox', 'webkit']\nfunction assertBrowserSupported(name, supported = PLAYWRIGHT_BROWSERS) {\n  if (!supported.includes(name)) {\n    throw new Error(`Browser \"${name}\" not supported. Use one of: ${supported.join(', ')}.`)\n  }\n}","typeGuard":"const SUPPORTED = ['chromium', 'firefox', 'webkit'] as const\nfunction isSupportedBrowser(v): v is typeof SUPPORTED[number] {\n  return (SUPPORTED as readonly string[]).includes(v)\n}","tryCatchPattern":null,"preventionTips":["Pin browser names to the provider's documented list in a shared constant.","Treat the error message's 'Supported browsers' list as the source of truth.","Avoid free-text browser names from env vars without validation."],"tags":["browser","config","provider"],"backgroundTag":null,"analyzedSha":"1fa9837ec26533512fdcad8baebf249771bd340a","analyzedAt":"2026-08-11T16:11:39.638Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}