wip
This commit is contained in:
59
packages/infrastructure/config/BrowserModeConfig.ts
Normal file
59
packages/infrastructure/config/BrowserModeConfig.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Browser mode configuration module for headed/headless browser toggle.
|
||||
*
|
||||
* Determines browser mode based on NODE_ENV:
|
||||
* - development: default headed, but configurable via runtime setter
|
||||
* - production: always headless
|
||||
* - test: always headless
|
||||
* - default: headless (for safety)
|
||||
*/
|
||||
|
||||
export type BrowserMode = 'headed' | 'headless';
|
||||
|
||||
export interface BrowserModeConfig {
|
||||
mode: BrowserMode;
|
||||
source: 'GUI' | 'NODE_ENV';
|
||||
}
|
||||
|
||||
/**
|
||||
* Loader for browser mode configuration.
|
||||
* Determines whether browser should run in headed or headless mode based on NODE_ENV.
|
||||
* In development mode, provides runtime control via setter method.
|
||||
*/
|
||||
export class BrowserModeConfigLoader {
|
||||
private developmentMode: BrowserMode = 'headed'; // Default to headed in development
|
||||
|
||||
/**
|
||||
* Load browser mode configuration based on NODE_ENV.
|
||||
* - NODE_ENV=development: returns current developmentMode (default: headed)
|
||||
* - NODE_ENV=production: always headless
|
||||
* - NODE_ENV=test: always headless
|
||||
* - default: headless (for safety)
|
||||
*/
|
||||
load(): BrowserModeConfig {
|
||||
const nodeEnv = process.env.NODE_ENV || 'production';
|
||||
|
||||
if (nodeEnv === 'development') {
|
||||
return { mode: this.developmentMode, source: 'GUI' };
|
||||
}
|
||||
|
||||
return { mode: 'headless', source: 'NODE_ENV' };
|
||||
}
|
||||
|
||||
/**
|
||||
* Set browser mode for development environment.
|
||||
* Only affects behavior when NODE_ENV=development.
|
||||
* @param mode - The browser mode to use in development
|
||||
*/
|
||||
setDevelopmentMode(mode: BrowserMode): void {
|
||||
this.developmentMode = mode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current development browser mode setting.
|
||||
* @returns The current browser mode for development
|
||||
*/
|
||||
getDevelopmentMode(): BrowserMode {
|
||||
return this.developmentMode;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
/**
|
||||
* Configuration module exports for infrastructure layer.
|
||||
* Infrastructure configuration barrel export.
|
||||
* Exports all configuration modules for easy imports.
|
||||
*/
|
||||
|
||||
export type { AutomationMode, AutomationEnvironmentConfig } from './AutomationConfig';
|
||||
export { loadAutomationConfig, getAutomationMode } from './AutomationConfig';
|
||||
export * from './AutomationConfig';
|
||||
export * from './LoggingConfig';
|
||||
export * from './BrowserModeConfig';
|
||||
Reference in New Issue
Block a user