{"record":{"id":"2163f8646399c949","repo":"vitest-dev/vitest","slug":"cannot-merge-reports-with-watch-enabled","errorCode":null,"errorMessage":"Cannot merge reports with --watch enabled","messagePattern":"Cannot merge reports with --watch enabled","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/vitest/src/node/config/resolveConfig.ts","lineNumber":377,"sourceCode":"    if (Number.isNaN(count) || count <= 0) {\n      throw new Error('--shard <count> must be a positive number')\n    }\n\n    if (Number.isNaN(index) || index <= 0 || index > count) {\n      throw new Error(\n        '--shard <index> must be a positive number less then <count>',\n      )\n    }\n\n    resolved.shard = { index, count }\n  }\n\n  if (resolved.standalone && !resolved.watch) {\n    throw new Error(`Vitest standalone mode requires --watch`)\n  }\n\n  if (resolved.mergeReports && resolved.watch) {\n    throw new Error(`Cannot merge reports with --watch enabled`)\n  }\n\n  if (resolved.maxWorkers) {\n    resolved.maxWorkers = resolveInlineWorkerOption(resolved.maxWorkers)\n  }\n\n  // `browser.fileParallelism` was replaced by the top-level `fileParallelism`. Map\n  // it (only when browser is enabled, since it was a browser-only option) so\n  // existing configs keep working instead of being silently ignored.\n  const browserOptions = options.browser as { enabled?: boolean; fileParallelism?: boolean } | undefined\n  const browserFileParallelism = browserOptions?.enabled ? browserOptions.fileParallelism : undefined\n  if (browserFileParallelism !== undefined) {\n    logger.deprecate('`browser.fileParallelism` is deprecated. Use the top-level `fileParallelism` option instead.')\n  }\n\n  const fileParallelism = options.fileParallelism ?? browserFileParallelism ?? true\n\n  if (!fileParallelism) {","sourceCodeStart":359,"sourceCodeEnd":395,"githubUrl":"https://github.com/vitest-dev/vitest/blob/1fa9837ec26533512fdcad8baebf249771bd340a/packages/vitest/src/node/config/resolveConfig.ts#L359-L395","documentation":"`--merge-reports` consumes previously written report files (from a sharded CI run, written via `--reporter` output files). Watch mode runs continuously and has no terminal point at which to merge. Vitest rejects `mergeReports && watch` because the operation is ill-defined.","triggerScenarios":"Running `vitest --merge-reports --watch`, or a config/CLI combo where `mergeReports: true` coincides with `watch: true`.","commonSituations":"A wrapper script that always adds `--watch` for local dev reused in a merge step; leftover `mergeReports` in config.","solutions":["Run the merge as a separate one-shot invocation without `--watch`.","Remove `mergeReports` from the persistent config and pass it only on the merge CI step.","Use distinct npm scripts for `test:watch` and `test:merge`."],"exampleFix":"# before\nvitest --merge-reports --watch\n# after\nvitest --merge-reports","handlingStrategy":"validation","validationCode":"const mergeReports = process.argv.includes('--merge-reports')\nconst watch = process.argv.includes('--watch')\nif (mergeReports && watch) {\n  throw new Error('Cannot merge reports while watching; drop --watch for the merge step.')\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use one script for `test:watch` and another for `test:merge-reports`.","Do not keep `mergeReports` in the shared config; pass it inline on the merge step."],"tags":["cli","merge-reports","watch","ci"],"backgroundTag":null,"analyzedSha":"1fa9837ec26533512fdcad8baebf249771bd340a","analyzedAt":"2026-08-11T16:11:39.638Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}