Testing Environment Configuration Detection in Parcel
This test suite validates the Environment creation functionality in Parcel, focusing on context detection and configuration defaults. It ensures proper environment initialization for both browser and Node.js contexts with appropriate engine settings and build configurations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
parcel-bundler/parcel
packages/core/core/test/Environment.test.js
// @flow strict-local
import assert from 'assert';
import {createEnvironment} from '../src/Environment';
describe('Environment', () => {
it('assigns a default environment with nothing passed', () => {
assert.deepEqual(createEnvironment(), {
id: 'c242f987e3544367',
context: 'browser',
engines: {
browsers: ['> 0.25%'],
},
includeNodeModules: true,
outputFormat: 'global',
isLibrary: false,
shouldOptimize: false,
shouldScopeHoist: false,
sourceMap: undefined,
loc: undefined,
sourceType: 'module',
});
});
it('assigns a node context if a node engine is given', () => {
assert.deepEqual(createEnvironment({engines: {node: '>= 10.0.0'}}), {
id: '69e0ab7220ee8f7a',
context: 'node',
engines: {
node: '>= 10.0.0',
},
includeNodeModules: false,
outputFormat: 'commonjs',
isLibrary: false,
shouldOptimize: false,
shouldScopeHoist: false,
sourceMap: undefined,
loc: undefined,
sourceType: 'module',
});
});
it('assigns a browser context if browser engines are given', () => {
assert.deepEqual(
createEnvironment({engines: {browsers: ['last 1 version']}}),
{
id: '4b5c9005af8c5b19',
context: 'browser',
engines: {
browsers: ['last 1 version'],
},
includeNodeModules: true,
outputFormat: 'global',
isLibrary: false,
shouldOptimize: false,
shouldScopeHoist: false,
sourceMap: undefined,
loc: undefined,
sourceType: 'module',
},
);
});
it('assigns default engines for node', () => {
assert.deepEqual(createEnvironment({context: 'node'}), {
id: 'b9b60fc7dcc0ae9c',
context: 'node',
engines: {
node: '>= 18.0.0',
},
includeNodeModules: false,
outputFormat: 'commonjs',
isLibrary: false,
shouldOptimize: false,
shouldScopeHoist: false,
sourceMap: undefined,
loc: undefined,
sourceType: 'module',
});
});
it('assigns default engines for browsers', () => {
assert.deepEqual(createEnvironment({context: 'browser'}), {
id: 'c242f987e3544367',
context: 'browser',
engines: {
browsers: ['> 0.25%'],
},
includeNodeModules: true,
outputFormat: 'global',
isLibrary: false,
shouldOptimize: false,
shouldScopeHoist: false,
sourceMap: undefined,
loc: undefined,
sourceType: 'module',
});
});
});