export interface TestEnvironment { name: string; baseURL: string; apiBaseURL: string; uniappBaseURL: string; mockEnabled: boolean; timeout: number; credentials: { username: string; password: string; }; } export class TestConfig { private static instance: TestConfig; private currentEnv: TestEnvironment; private constructor() { this.currentEnv = this.loadEnvironment(); } static getInstance(): TestConfig { if (!TestConfig.instance) { TestConfig.instance = new TestConfig(); } return TestConfig.instance; } getEnvironment(): TestEnvironment { return this.currentEnv; } getBaseURL(): string { return this.currentEnv.baseURL; } setEnvironment(envName: string): void { this.currentEnv = this.loadEnvironment(envName); } private loadEnvironment(envName?: string): TestEnvironment { const name = envName || process.env.TEST_ENV || 'local'; return { name, baseURL: process.env.ADMIN_BASE_URL || 'http://localhost:5174', apiBaseURL: process.env.API_BASE_URL || 'http://127.0.0.1:8080', uniappBaseURL: process.env.UNIAPP_BASE_URL || 'http://localhost:8081', mockEnabled: process.env.MOCK_ENABLED === 'true', timeout: parseInt(process.env.TEST_TIMEOUT || '30000'), credentials: { username: process.env.TEST_USERNAME || 'admin', password: process.env.TEST_PASSWORD || 'admin123' } }; } } export const testConfig = TestConfig.getInstance();