diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index bfb4d1b3..85be2107 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -1674,6 +1674,11 @@ getJasmineRequireObj().Env = function(j$) { */ this.execute = async function(runablesToRun) { installGlobalErrors(); + + if (parallelLoadingState) { + validateConfigForParallel(); + } + return runner.execute(runablesToRun); }; @@ -1831,6 +1836,16 @@ getJasmineRequireObj().Env = function(j$) { } } + function validateConfigForParallel() { + if (!config.random) { + throw new Error('Randomization cannot be disabled in parallel mode'); + } + + if (config.seed !== null && config.seed !== undefined) { + throw new Error('Random seed cannot be set in parallel mode'); + } + } + this.describe = function(description, definitionFn) { ensureIsNotNested('describe'); return suiteBuilder.describe(description, definitionFn).metadata; diff --git a/spec/core/EnvSpec.js b/spec/core/EnvSpec.js index 1b401f52..0b650158 100644 --- a/spec/core/EnvSpec.js +++ b/spec/core/EnvSpec.js @@ -752,6 +752,24 @@ describe('Env', function() { await env.execute(); expect(jasmineUnderTest.Suite.prototype.reset).not.toHaveBeenCalled(); }); + + describe('In parallel mode', function() { + it('rejects if random is set to false', async function() { + env.setParallelLoadingState('specs'); + env.configure({ random: false }); + await expectAsync(env.execute()).toBeRejectedWithError( + 'Randomization cannot be disabled in parallel mode' + ); + }); + + it('rejects if seed is set', async function() { + env.setParallelLoadingState('specs'); + env.configure({ seed: 1234 }); + await expectAsync(env.execute()).toBeRejectedWithError( + 'Random seed cannot be set in parallel mode' + ); + }); + }); }); describe('#spyOnGlobalErrorsAsync', function() { diff --git a/src/core/Env.js b/src/core/Env.js index 21dd0ef3..f7721435 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -532,6 +532,11 @@ getJasmineRequireObj().Env = function(j$) { */ this.execute = async function(runablesToRun) { installGlobalErrors(); + + if (parallelLoadingState) { + validateConfigForParallel(); + } + return runner.execute(runablesToRun); }; @@ -689,6 +694,16 @@ getJasmineRequireObj().Env = function(j$) { } } + function validateConfigForParallel() { + if (!config.random) { + throw new Error('Randomization cannot be disabled in parallel mode'); + } + + if (config.seed !== null && config.seed !== undefined) { + throw new Error('Random seed cannot be set in parallel mode'); + } + } + this.describe = function(description, definitionFn) { ensureIsNotNested('describe'); return suiteBuilder.describe(description, definitionFn).metadata;