Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

105 lines
2.3 KiB
TypeScript

import { ENVIRONMENTS } from '../constants';
export interface TestEnvironment {
name: string;
baseURL: string;
mockEnabled: boolean;
mockMode: 'full' | 'partial' | 'none';
timeout: {
default: number;
navigation: number;
element: number;
network: number;
};
}
class TestConfig {
private static instance: TestConfig;
private currentEnvironment: string;
private environments: Record<string, TestEnvironment>;
private constructor() {
this.currentEnvironment = process.env.E2E_ENV || 'local';
this.environments = {
local: {
...ENVIRONMENTS.LOCAL,
timeout: {
default: 30000,
navigation: 30000,
element: 10000,
network: 30000
}
},
dev: {
...ENVIRONMENTS.DEV,
timeout: {
default: 30000,
navigation: 30000,
element: 10000,
network: 30000
}
},
test: {
...ENVIRONMENTS.TEST,
timeout: {
default: 30000,
navigation: 30000,
element: 10000,
network: 30000
}
},
prod: {
...ENVIRONMENTS.PROD,
timeout: {
default: 30000,
navigation: 30000,
element: 10000,
network: 30000
}
}
};
}
static getInstance(): TestConfig {
if (!TestConfig.instance) {
TestConfig.instance = new TestConfig();
}
return TestConfig.instance;
}
getEnvironment(): TestEnvironment {
return this.environments[this.currentEnvironment];
}
getBaseURL(): string {
return this.environments[this.currentEnvironment].baseURL;
}
isMockEnabled(): boolean {
return this.environments[this.currentEnvironment].mockEnabled;
}
getMockMode(): string {
return this.environments[this.currentEnvironment].mockMode;
}
getCurrentEnvironmentName(): string {
return this.currentEnvironment;
}
setEnvironment(envName: string): void {
if (this.environments[envName]) {
this.currentEnvironment = envName;
} else {
throw new Error(`Unknown environment: ${envName}`);
}
}
getTimeout(): TestEnvironment['timeout'] {
return this.environments[this.currentEnvironment].timeout;
}
}
export const testConfig = TestConfig.getInstance();