{"id":"080cf1510a50b04f","repo":"vitest-dev/vitest","slug":"name-browser-name-is-required-please-set-test","errorCode":null,"errorMessage":"${name}Browser name is required. Please, set `test.browser.instances[].browser` option manually.","messagePattern":"(.+?)Browser name is required\\. Please, set `test\\.browser\\.instances\\[\\]\\.browser` option manually\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser/src/node/utils.ts","lineNumber":75,"sourceCode":"  if (config.browser.screenshotDirectory) {\n    return resolve(\n      config.browser.screenshotDirectory,\n      relative(config.root, dir),\n      base,\n      name,\n    )\n  }\n  return resolve(dir, '__screenshots__', base, name)\n}\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)","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/vitest-dev/vitest/blob/d568f8ce3739b532d5bf2c1ee1e45e8a8a473d09/packages/browser/src/node/utils.ts#L57-L93","documentation":"Thrown by getBrowserProvider() when the resolved browser name is empty/falsy. Vitest's Browser Mode needs to know which browser engine to launch (chromium, firefox, webkit, etc.) for each project/instance. Without a name it cannot resolve a provider, so it aborts before any test runs.","triggerScenarios":"Calling browser tests where project.config.browser.name resolves to '' or undefined. This happens when you enable browser mode but omit the browser field, or define instances[] entries without a 'browser' key.","commonSituations":"Setting test.browser.enabled=true without instances or a top-level browser name; copy-pasting a config snippet that referenced a browser variable that was never defined; upgrading Vitest where instances[].browser became required.","solutions":["Set test.browser.name to a supported browser (e.g. 'chromium') at the project level, OR","Add test.browser.instances[] entries each with a 'browser' field, e.g. { browser: 'chromium' }.","If using a custom project, ensure the name propagates from config.browser.instances[i].browser into config.browser.name."],"exampleFix":"// before\nexport default defineConfig({\n  test: {\n    browser: { enabled: true, provider: 'playwright' }, // no browser name\n  },\n})\n// after\nexport default defineConfig({\n  test: {\n    browser: {\n      enabled: true,\n      provider: 'playwright',\n      instances: [{ browser: 'chromium' }],\n    },\n  },\n})","handlingStrategy":"validation","validationCode":"// before running browser tests, verify each instance has a browser name\nimport { defineConfig } from 'vitest/config'\nconst cfg = defineConfig({})\nconst instances = cfg.test?.browser?.instances ?? []\nfor (const inst of instances) {\n  if (!inst.browser) throw new Error(`instance missing 'browser': ${JSON.stringify(inst)}`)\n}","typeGuard":"function hasBrowserName(inst: unknown): inst is { browser: string } {\n  return typeof inst === 'object' && inst !== null\n    && typeof (inst as any).browser === 'string'\n    && (inst as any).browser.length > 0\n}","tryCatchPattern":null,"preventionTips":["Always specify instances[].browser explicitly instead of relying on a default.","Add a preflight check in CI that fails fast if any instance lacks a browser name.","Treat browser name as required in your config's TypeScript types."],"tags":["browser-mode","config","playwright"],"analyzedSha":"d568f8ce3739b532d5bf2c1ee1e45e8a8a473d09","analyzedAt":"2026-08-03T20:23:56.861Z","schemaVersion":2}