UNPKG

@buddy-works/unit-tests

Version:

Universal test results collector for Jest, Jasmine, Mocha, Cypress, Playwright, and Vitest that sends results to Buddy Works API in real-time

98 lines (97 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.environmentConfig = exports.environmentError = void 0; exports.setEnvironmentVariable = setEnvironmentVariable; const environmentConfig = { BUDDY_UT_TOKEN: { type: 'string', required: true, secret: true }, CI: { type: 'boolean' }, BUDDY_LOGGER_LEVEL: { type: 'string' }, BUDDY_DEV_LOGGER: { type: 'string' }, BUDDY_API_URL: { type: 'string' }, BUDDY_SESSION_ID: { type: 'string' }, BUDDY_API_FAILURE: { type: 'boolean' }, }; exports.environmentConfig = environmentConfig; function processConfigEntry(key, config) { if (config.type === 'boolean') { return getEnvironmentFlag(key, config.defaultValue ?? false); } else { const stringConfig = config; return stringConfig.required === true ? getEnvironment(key, true) : getEnvironment(key, false); } } function loadEnvironment() { const variables = {}; for (const key of Object.keys(environmentConfig)) { try { const config = environmentConfig[key]; if (config.type === 'string' && config.required) { getEnvironment(key, true); } } catch (error) { return { error, variables: {}, }; } } for (const key of Object.keys(environmentConfig)) { Object.defineProperty(variables, key, { get() { return processConfigEntry(key, environmentConfig[key]); }, enumerable: true, configurable: true, }); } return { variables, }; } function setEnvironmentVariable(key, value) { const config = environmentConfig[key]; if (config.type === 'boolean') { process.env[key] = value ? '1' : '0'; } else { if (value === undefined) { process.env[key] = ''; } else { process.env[key] = value; } } } function getEnvironment(key, required = false) { const MISSING_REQUIRED_ENVIRONMENT_VARIABLE_ERROR = `Missing required configuration. Please set the ${key} environment variable.`; const value = process.env[key]; if (value === undefined) { if (required) { throw new Error(MISSING_REQUIRED_ENVIRONMENT_VARIABLE_ERROR); } return undefined; } const trimmedValue = value.trim(); if (trimmedValue === '') { if (required) { throw new Error(MISSING_REQUIRED_ENVIRONMENT_VARIABLE_ERROR); } return undefined; } return trimmedValue; } function getEnvironmentFlag(key, defaultValue = false) { const value = process.env[key]; if (value === undefined) { return defaultValue; } const falseValues = ['0', 'false', 'no', 'off', '']; return !falseValues.includes(value.toLowerCase().trim()); } const environmentResult = loadEnvironment(); exports.default = environmentResult.variables; exports.environmentError = environmentResult.error;