{"id":"6fadc3be41d1015c","repo":"jestjs/jest","slug":"seed-value-must-be-0x80000000-and-0x7fffffff","errorCode":null,"errorMessage":"seed value must be `-0x80000000` and `0x7fffffff` inclusive - instead it is ${newOptions.seed}","messagePattern":"seed value must be `-0x80000000` and `0x7fffffff` inclusive - instead it is (.+?)","errorType":"validation","errorClass":"ValidationError","httpStatus":null,"severity":"error","filePath":"packages/jest-config/src/normalize.ts","lineNumber":1136,"sourceCode":"    newOptions.onlyChanged = newOptions.watch;\n  }\n\n  newOptions.randomize = newOptions.randomize || argv.randomize;\n\n  newOptions.showSeed =\n    newOptions.randomize || newOptions.showSeed || argv.showSeed;\n\n  const upperBoundSeedValue = 2 ** 31;\n\n  // bounds are determined by xoroshiro128plus which is used in v8 and is used here (at time of writing)\n  newOptions.seed =\n    argv.seed ??\n    Math.floor((2 ** 32 - 1) * Math.random() - upperBoundSeedValue);\n  if (\n    newOptions.seed < -upperBoundSeedValue ||\n    newOptions.seed > upperBoundSeedValue - 1\n  ) {\n    throw new ValidationError(\n      'Validation Error',\n      `seed value must be between \\`-0x80000000\\` and \\`0x7fffffff\\` inclusive - instead it is ${newOptions.seed}`,\n    );\n  }\n\n  if (!newOptions.onlyChanged) {\n    newOptions.onlyChanged = false;\n  }\n\n  if (!newOptions.lastCommit) {\n    newOptions.lastCommit = false;\n  }\n\n  if (!newOptions.onlyFailures) {\n    newOptions.onlyFailures = false;\n  }\n\n  if (!newOptions.watchAll) {","sourceCodeStart":1118,"sourceCodeEnd":1154,"githubUrl":"https://github.com/jestjs/jest/blob/f49721c78e195558b40913977c9230f5b7f559d8/packages/jest-config/src/normalize.ts#L1118-L1154","documentation":"normalize (packages/jest-config/src/normalize.ts:1132) validates the `seed` value against the signed 32-bit range used by the xoroshiro128plus PRNG that V8 (and Jest) rely on. The accepted bounds are -2147483648 (-0x80000000) through 2147483647 (0x7fffffff) inclusive; anything outside throws a ValidationError. The seed drives test-order randomization when `--randomize` is used.","triggerScenarios":"Passing `--seed 9999999999` or `--seed -3000000000`, or setting `seed` in config/argv to a value beyond the 32-bit signed range.","commonSituations":"Copying a seed from another tool that uses a wider integer; programmatically generating a seed with a large random number; passing a value parsed from an env var as a number.","solutions":["Use a seed within [-2147483648, 2147483647], e.g. `--seed 12345`.","If deriving a seed programmatically, mask it into range: `seed & 0xffffffff` then interpret as signed, or use `Math.floor(Math.random() * 0x100000000) - 0x80000000`.","Omit `--seed` entirely to let Jest generate a valid random seed."],"exampleFix":"# before\njest --randomize --seed 9000000000\n\n# after\njest --randomize --seed 12345","handlingStrategy":"validation","validationCode":"const SEED_MIN = -0x80000000;\nconst SEED_MAX = 0x7fffffff;\nfunction validateSeed(seed: number): number {\n  if (!Number.isInteger(seed) || seed < SEED_MIN || seed > SEED_MAX) {\n    throw new RangeError(`seed must be an integer in [${SEED_MIN}, ${SEED_MAX}]`);\n  }\n  return seed;\n}","typeGuard":"const isValidSeed = (n: unknown): n is number =>\n  typeof n === 'number' && Number.isInteger(n) && n >= -0x80000000 && n <= 0x7fffffff;","tryCatchPattern":null,"preventionTips":["Omit --seed to let Jest pick a valid random seed.","Clamp generated seeds into the signed 32-bit range.","Treat the seed as a signed int32 when persisting across runs."],"tags":["jest-config","seed","validation","randomize"],"analyzedSha":"f49721c78e195558b40913977c9230f5b7f559d8","analyzedAt":"2026-08-03T20:16:28.571Z","schemaVersion":2}