{"record":{"id":"6442115d0ca6f600","repo":"vitest-dev/vitest","slug":"projects-last-and-spec-project-name-have","errorCode":null,"errorMessage":"Projects \"${last}\" and \"${spec.project.name}\" have different 'maxWorkers' but same 'sequence.groupOrder'.\\nProvide unique 'sequence.groupOrder' for them.","messagePattern":"Projects \"(.+?)\" and \"(.+?)\" have different 'maxWorkers' but same 'sequence\\.groupOrder'\\.\\\\nProvide unique 'sequence\\.groupOrder' for them\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/vitest/src/node/pool.ts","lineNumber":423,"sourceCode":"      return\n    }\n\n    const order = spec.project.config.sequence.groupOrder\n    const isolate = spec.project.config.isolate\n\n    // Files that have disabled parallelism and default groupOrder are set into their own group\n    if (isolate === true && order === 0 && spec.project.config.maxWorkers === 1) {\n      return sequential.specs.push([spec])\n    }\n\n    const maxWorkers = resolveMaxWorkers(spec.project)\n    groups[order] ||= { specs: [], maxWorkers }\n\n    // Multiple projects with different maxWorkers but same groupOrder\n    if (groups[order].maxWorkers !== maxWorkers) {\n      const last = groups[order].specs.at(-1)?.at(-1)?.project.name\n\n      throw new Error(`Projects \"${last}\" and \"${spec.project.name}\" have different 'maxWorkers' but same 'sequence.groupOrder'.\\nProvide unique 'sequence.groupOrder' for them.`)\n    }\n\n    // Non-isolated single worker can receive all files at once.\n    // vm pools are excluded: their `isolate: false` comes from config\n    // resolution rather than the user, because their isolation is a fresh VM\n    // context per run request — batching files into a single run request\n    // would share one context across all of them.\n    if (isolate === false && maxWorkers === 1 && spec.pool !== 'vmThreads' && spec.pool !== 'vmForks') {\n      const previous = groups[order].specs[0]?.[0]\n\n      if (previous && previous.project.name === spec.project.name && isEqualEnvironments(spec, previous)) {\n        return groups[order].specs[0].push(spec)\n      }\n    }\n\n    groups[order].specs.push([spec])\n  })\n","sourceCodeStart":405,"sourceCodeEnd":441,"githubUrl":"https://github.com/vitest-dev/vitest/blob/1fa9837ec26533512fdcad8baebf249771bd340a/packages/vitest/src/node/pool.ts#L405-L441","documentation":"When grouping specs by sequence.groupOrder, all projects sharing a groupOrder must have the same maxWorkers; otherwise the concurrency budget for that group is ambiguous and Vitest throws. The error names the conflicting projects so you can disambiguate their config.","triggerScenarios":"Two projects configured with the same sequence.groupOrder (default 0) but different resolved maxWorkers, encountered while building groups in the pool. The last spec already in the group conflicts with the new spec.project.","commonSituations":"Multi-project workspaces where one project sets maxWorkers and another uses the default; relying on default groupOrder 0 across projects with differing concurrency.","solutions":["Give each project a unique test.sequence.groupOrder value.","Align test.maxWorkers across projects that share a groupOrder.","Set groupOrder explicitly on every project rather than relying on the default 0."],"exampleFix":"// before - both projects default groupOrder 0, different maxWorkers\nexport default defineProject(() => [\n  { test: { name: 'a', maxWorkers: 4 } },\n  { test: { name: 'b', maxWorkers: 1 } }\n])\n\n// after\nexport default defineProject(() => [\n  { test: { name: 'a', maxWorkers: 4, sequence: { groupOrder: 1 } } },\n  { test: { name: 'b', maxWorkers: 1, sequence: { groupOrder: 2 } } }\n])","handlingStrategy":"validation","validationCode":"function groupOrdersAreUniquePerMaxWorkers(projects) {\n  const byOrder = new Map()\n  for (const p of projects) {\n    const order = p.config.sequence?.groupOrder ?? 0\n    const mw = p.config.maxWorkers\n    if (byOrder.has(order) && byOrder.get(order) !== mw) return false\n    byOrder.set(order, mw)\n  }\n  return true\n}\n// before run: assert groupOrdersAreUniquePerMaxWorkers(vitest.projects)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Assign an explicit, unique sequence.groupOrder to every project.","When overriding maxWorkers on a project, also set a unique groupOrder.","Document the groupOrder convention in the workspace README."],"tags":["sequencing","max-workers","grouping","multi-project"],"backgroundTag":null,"analyzedSha":"1fa9837ec26533512fdcad8baebf249771bd340a","analyzedAt":"2026-08-11T16:11:39.638Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}