playwright-automation-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +225 -0
  3. package/dist/api/api.assertions.d.ts +196 -0
  4. package/dist/api/api.assertions.d.ts.map +1 -0
  5. package/dist/api/api.assertions.js +462 -0
  6. package/dist/api/api.assertions.js.map +1 -0
  7. package/dist/api/api.builder.d.ts +134 -0
  8. package/dist/api/api.builder.d.ts.map +1 -0
  9. package/dist/api/api.builder.js +273 -0
  10. package/dist/api/api.builder.js.map +1 -0
  11. package/dist/api/api.client.d.ts +157 -0
  12. package/dist/api/api.client.d.ts.map +1 -0
  13. package/dist/api/api.client.js +493 -0
  14. package/dist/api/api.client.js.map +1 -0
  15. package/dist/api/index.d.ts +8 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +17 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/core/base.driver.d.ts +130 -0
  20. package/dist/core/base.driver.d.ts.map +1 -0
  21. package/dist/core/base.driver.js +264 -0
  22. package/dist/core/base.driver.js.map +1 -0
  23. package/dist/core/driver.factory.d.ts +120 -0
  24. package/dist/core/driver.factory.d.ts.map +1 -0
  25. package/dist/core/driver.factory.js +222 -0
  26. package/dist/core/driver.factory.js.map +1 -0
  27. package/dist/core/element.actions.d.ts +119 -0
  28. package/dist/core/element.actions.d.ts.map +1 -0
  29. package/dist/core/element.actions.js +379 -0
  30. package/dist/core/element.actions.js.map +1 -0
  31. package/dist/core/hook.manager.d.ts +186 -0
  32. package/dist/core/hook.manager.d.ts.map +1 -0
  33. package/dist/core/hook.manager.js +297 -0
  34. package/dist/core/hook.manager.js.map +1 -0
  35. package/dist/core/index.d.ts +8 -0
  36. package/dist/core/index.d.ts.map +1 -0
  37. package/dist/core/index.js +22 -0
  38. package/dist/core/index.js.map +1 -0
  39. package/dist/index.d.ts +17 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +128 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/mobile/index.d.ts +7 -0
  44. package/dist/mobile/index.d.ts.map +1 -0
  45. package/dist/mobile/index.js +14 -0
  46. package/dist/mobile/index.js.map +1 -0
  47. package/dist/mobile/mobile.assertions.d.ts +146 -0
  48. package/dist/mobile/mobile.assertions.d.ts.map +1 -0
  49. package/dist/mobile/mobile.assertions.js +333 -0
  50. package/dist/mobile/mobile.assertions.js.map +1 -0
  51. package/dist/mobile/mobile.driver.d.ts +297 -0
  52. package/dist/mobile/mobile.driver.d.ts.map +1 -0
  53. package/dist/mobile/mobile.driver.js +808 -0
  54. package/dist/mobile/mobile.driver.js.map +1 -0
  55. package/dist/types/common.types.d.ts +200 -0
  56. package/dist/types/common.types.d.ts.map +1 -0
  57. package/dist/types/common.types.js +3 -0
  58. package/dist/types/common.types.js.map +1 -0
  59. package/dist/types/config.types.d.ts +192 -0
  60. package/dist/types/config.types.d.ts.map +1 -0
  61. package/dist/types/config.types.js +3 -0
  62. package/dist/types/config.types.js.map +1 -0
  63. package/dist/types/driver.types.d.ts +500 -0
  64. package/dist/types/driver.types.d.ts.map +1 -0
  65. package/dist/types/driver.types.js +3 -0
  66. package/dist/types/driver.types.js.map +1 -0
  67. package/dist/types/enums.d.ts +53 -0
  68. package/dist/types/enums.d.ts.map +1 -0
  69. package/dist/types/enums.js +62 -0
  70. package/dist/types/enums.js.map +1 -0
  71. package/dist/types/index.d.ts +8 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/index.js +15 -0
  74. package/dist/types/index.js.map +1 -0
  75. package/dist/utils/config.manager.d.ts +144 -0
  76. package/dist/utils/config.manager.d.ts.map +1 -0
  77. package/dist/utils/config.manager.js +473 -0
  78. package/dist/utils/config.manager.js.map +1 -0
  79. package/dist/utils/errors.d.ts +149 -0
  80. package/dist/utils/errors.d.ts.map +1 -0
  81. package/dist/utils/errors.js +290 -0
  82. package/dist/utils/errors.js.map +1 -0
  83. package/dist/utils/helpers.d.ts +124 -0
  84. package/dist/utils/helpers.d.ts.map +1 -0
  85. package/dist/utils/helpers.js +421 -0
  86. package/dist/utils/helpers.js.map +1 -0
  87. package/dist/utils/index.d.ts +9 -0
  88. package/dist/utils/index.d.ts.map +1 -0
  89. package/dist/utils/index.js +78 -0
  90. package/dist/utils/index.js.map +1 -0
  91. package/dist/utils/logger.d.ts +145 -0
  92. package/dist/utils/logger.d.ts.map +1 -0
  93. package/dist/utils/logger.js +235 -0
  94. package/dist/utils/logger.js.map +1 -0
  95. package/dist/utils/wait.utils.d.ts +95 -0
  96. package/dist/utils/wait.utils.d.ts.map +1 -0
  97. package/dist/utils/wait.utils.js +306 -0
  98. package/dist/utils/wait.utils.js.map +1 -0
  99. package/dist/web/index.d.ts +8 -0
  100. package/dist/web/index.d.ts.map +1 -0
  101. package/dist/web/index.js +16 -0
  102. package/dist/web/index.js.map +1 -0
  103. package/dist/web/web.assertions.d.ts +164 -0
  104. package/dist/web/web.assertions.d.ts.map +1 -0
  105. package/dist/web/web.assertions.js +427 -0
  106. package/dist/web/web.assertions.js.map +1 -0
  107. package/dist/web/web.driver.d.ts +174 -0
  108. package/dist/web/web.driver.d.ts.map +1 -0
  109. package/dist/web/web.driver.js +571 -0
  110. package/dist/web/web.driver.js.map +1 -0
  111. package/dist/web/web.page.d.ts +286 -0
  112. package/dist/web/web.page.d.ts.map +1 -0
  113. package/dist/web/web.page.js +570 -0
  114. package/dist/web/web.page.js.map +1 -0
  115. package/package.json +115 -0
@@ -0,0 +1,144 @@
1
+ import { WebConfig, ApiConfig, MobileConfig, FrameworkConfig, Platform } from "../types";
2
+ /**
3
+ * Configuration source type
4
+ */
5
+ export type ConfigSource = "env" | "file" | "object" | "default";
6
+ /**
7
+ * Configuration load result
8
+ */
9
+ export interface ConfigLoadResult {
10
+ config: FrameworkConfig;
11
+ sources: ConfigSource[];
12
+ warnings: string[];
13
+ }
14
+ /**
15
+ * Config Manager class for loading and managing configuration
16
+ */
17
+ export declare class ConfigManager {
18
+ private static instance;
19
+ private config;
20
+ private logger;
21
+ private loadedSources;
22
+ /**
23
+ * Default web configuration
24
+ */
25
+ private static readonly DEFAULT_WEB_CONFIG;
26
+ /**
27
+ * Default API configuration
28
+ */
29
+ private static readonly DEFAULT_API_CONFIG;
30
+ /**
31
+ * Default Mobile configuration
32
+ */
33
+ private static readonly DEFAULT_MOBILE_CONFIG;
34
+ constructor();
35
+ /**
36
+ * Get singleton instance
37
+ */
38
+ static getInstance(): ConfigManager;
39
+ /**
40
+ * Reset the singleton instance
41
+ */
42
+ static resetInstance(): void;
43
+ /**
44
+ * Load configuration from environment variables
45
+ */
46
+ loadFromEnv(envPath?: string): this;
47
+ /**
48
+ * Load configuration from a JSON/JS file
49
+ */
50
+ loadFromFile(filePath: string): this;
51
+ /**
52
+ * Load configuration from an object
53
+ */
54
+ loadFromObject(config: Partial<FrameworkConfig>): this;
55
+ /**
56
+ * Apply default configuration
57
+ */
58
+ applyDefaults(): this;
59
+ /**
60
+ * Get the full framework configuration
61
+ */
62
+ getConfig(): FrameworkConfig;
63
+ /**
64
+ * Get web configuration
65
+ */
66
+ getWebConfig(): WebConfig;
67
+ /**
68
+ * Get API configuration
69
+ */
70
+ getApiConfig(): ApiConfig;
71
+ /**
72
+ * Get mobile configuration
73
+ */
74
+ getMobileConfig(): MobileConfig;
75
+ /**
76
+ * Get configuration for a specific platform
77
+ */
78
+ getConfigForPlatform(platform: Platform): WebConfig | ApiConfig | MobileConfig;
79
+ /**
80
+ * Get loaded sources
81
+ */
82
+ getLoadedSources(): ConfigSource[];
83
+ /**
84
+ * Validate the configuration
85
+ */
86
+ validate(): {
87
+ valid: boolean;
88
+ errors: string[];
89
+ };
90
+ /**
91
+ * Set a specific configuration value
92
+ */
93
+ set<K extends keyof FrameworkConfig>(key: K, value: FrameworkConfig[K]): this;
94
+ /**
95
+ * Get a specific configuration value
96
+ */
97
+ get<K extends keyof FrameworkConfig>(key: K): FrameworkConfig[K];
98
+ /**
99
+ * Merge configuration
100
+ */
101
+ private mergeConfig;
102
+ /**
103
+ * Parse web config from environment variables
104
+ */
105
+ private parseWebConfigFromEnv;
106
+ /**
107
+ * Parse API config from environment variables
108
+ */
109
+ private parseApiConfigFromEnv;
110
+ /**
111
+ * Parse mobile config from environment variables
112
+ */
113
+ private parseMobileConfigFromEnv;
114
+ /**
115
+ * Parse proxy configuration from environment
116
+ */
117
+ private parseProxyFromEnv;
118
+ /**
119
+ * Get string from environment
120
+ */
121
+ private getEnvString;
122
+ /**
123
+ * Get number from environment
124
+ */
125
+ private getEnvNumber;
126
+ /**
127
+ * Get boolean from environment
128
+ */
129
+ private getEnvBoolean;
130
+ /**
131
+ * Get enum value from environment
132
+ */
133
+ private getEnvEnum;
134
+ /**
135
+ * Export configuration to JSON file
136
+ */
137
+ exportToFile(filePath: string): void;
138
+ /**
139
+ * Print configuration summary
140
+ */
141
+ printSummary(): void;
142
+ }
143
+ export declare const getConfig: () => ConfigManager;
144
+ //# sourceMappingURL=config.manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.manager.d.ts","sourceRoot":"","sources":["../../src/utils/config.manager.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,eAAe,EAIf,QAAQ,EACT,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAsB;IAE3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAexC;IAEF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CASxC;IAEF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAiB3C;;IAOF;;OAEG;WACW,WAAW,IAAI,aAAa;IAO1C;;OAEG;WACW,aAAa,IAAI,IAAI;IAInC;;OAEG;IACI,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAwB1C;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAuB3C;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAM7D;;OAEG;IACI,aAAa,IAAI,IAAI;IAiB5B;;OAEG;IACI,SAAS,IAAI,eAAe;IAInC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,eAAe,IAAI,YAAY;IAItC;;OAEG;IACI,oBAAoB,CACzB,QAAQ,EAAE,QAAQ,GACjB,SAAS,GAAG,SAAS,GAAG,YAAY;IAavC;;OAEG;IACI,gBAAgB,IAAI,YAAY,EAAE;IAIzC;;OAEG;IACI,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAuCvD;;OAEG;IACI,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EACxC,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,IAAI;IAKP;;OAEG;IACI,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvE;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoDhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY3C;;OAEG;IACI,YAAY,IAAI,IAAI;CAkB5B;AAGD,eAAO,MAAM,SAAS,QAAO,aAA4C,CAAC"}
@@ -0,0 +1,473 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getConfig = exports.ConfigManager = void 0;
37
+ const dotenv = __importStar(require("dotenv"));
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const types_1 = require("../types");
41
+ const logger_1 = require("./logger");
42
+ /**
43
+ * Config Manager class for loading and managing configuration
44
+ */
45
+ class ConfigManager {
46
+ static instance = null;
47
+ config;
48
+ logger;
49
+ loadedSources = [];
50
+ /**
51
+ * Default web configuration
52
+ */
53
+ static DEFAULT_WEB_CONFIG = {
54
+ browser: types_1.BrowserType.CHROMIUM,
55
+ headless: false,
56
+ baseURL: "",
57
+ viewport: { width: 1920, height: 1080 },
58
+ timeout: 30000,
59
+ slowMo: 0,
60
+ ignoreHTTPSErrors: false,
61
+ screenshotOnFailure: true,
62
+ screenshotDir: "./screenshots",
63
+ recordVideo: false,
64
+ videoDir: "./videos",
65
+ trace: false,
66
+ traceDir: "./traces",
67
+ logLevel: types_1.LogLevel.INFO,
68
+ };
69
+ /**
70
+ * Default API configuration
71
+ */
72
+ static DEFAULT_API_CONFIG = {
73
+ baseURL: "",
74
+ timeout: 30000,
75
+ headers: {},
76
+ ignoreHTTPSErrors: false,
77
+ enableLogging: true,
78
+ retryCount: 3,
79
+ retryDelay: 1000,
80
+ logLevel: types_1.LogLevel.INFO,
81
+ };
82
+ /**
83
+ * Default Mobile configuration
84
+ */
85
+ static DEFAULT_MOBILE_CONFIG = {
86
+ platform: types_1.MobilePlatform.ANDROID,
87
+ deviceName: "",
88
+ timeout: 60000,
89
+ appiumHost: "localhost",
90
+ appiumPort: 4723,
91
+ appiumPath: "/",
92
+ automationName: "UiAutomator2",
93
+ noReset: true,
94
+ fullReset: false,
95
+ autoAcceptAlerts: false,
96
+ autoDismissAlerts: false,
97
+ newCommandTimeout: 120,
98
+ orientation: "PORTRAIT",
99
+ screenshotOnFailure: true,
100
+ screenshotDir: "./screenshots",
101
+ logLevel: types_1.LogLevel.INFO,
102
+ };
103
+ constructor() {
104
+ this.config = {};
105
+ this.logger = logger_1.Logger.getInstance();
106
+ }
107
+ /**
108
+ * Get singleton instance
109
+ */
110
+ static getInstance() {
111
+ if (!ConfigManager.instance) {
112
+ ConfigManager.instance = new ConfigManager();
113
+ }
114
+ return ConfigManager.instance;
115
+ }
116
+ /**
117
+ * Reset the singleton instance
118
+ */
119
+ static resetInstance() {
120
+ ConfigManager.instance = null;
121
+ }
122
+ /**
123
+ * Load configuration from environment variables
124
+ */
125
+ loadFromEnv(envPath) {
126
+ // Load .env file if exists
127
+ const envFilePath = envPath ?? path.resolve(process.cwd(), ".env");
128
+ if (fs.existsSync(envFilePath)) {
129
+ dotenv.config({ path: envFilePath });
130
+ this.logger.debug(`Loaded environment from: ${envFilePath}`);
131
+ }
132
+ // Parse web config from env
133
+ this.config.web = this.parseWebConfigFromEnv();
134
+ // Parse API config from env
135
+ this.config.api = this.parseApiConfigFromEnv();
136
+ // Parse mobile config from env
137
+ this.config.mobile = this.parseMobileConfigFromEnv();
138
+ // Parse global settings
139
+ this.config.globalTimeout = this.getEnvNumber("GLOBAL_TIMEOUT", 30000);
140
+ this.loadedSources.push("env");
141
+ return this;
142
+ }
143
+ /**
144
+ * Load configuration from a JSON/JS file
145
+ */
146
+ loadFromFile(filePath) {
147
+ const absolutePath = path.resolve(process.cwd(), filePath);
148
+ if (!fs.existsSync(absolutePath)) {
149
+ this.logger.warn(`Config file not found: ${absolutePath}`);
150
+ return this;
151
+ }
152
+ try {
153
+ const fileContent = fs.readFileSync(absolutePath, "utf-8");
154
+ const fileConfig = JSON.parse(fileContent);
155
+ this.mergeConfig(fileConfig);
156
+ this.loadedSources.push("file");
157
+ this.logger.debug(`Loaded configuration from: ${absolutePath}`);
158
+ }
159
+ catch (error) {
160
+ this.logger.error(`Failed to load config file: ${error.message}`);
161
+ }
162
+ return this;
163
+ }
164
+ /**
165
+ * Load configuration from an object
166
+ */
167
+ loadFromObject(config) {
168
+ this.mergeConfig(config);
169
+ this.loadedSources.push("object");
170
+ return this;
171
+ }
172
+ /**
173
+ * Apply default configuration
174
+ */
175
+ applyDefaults() {
176
+ this.config.web = {
177
+ ...ConfigManager.DEFAULT_WEB_CONFIG,
178
+ ...this.config.web,
179
+ };
180
+ this.config.api = {
181
+ ...ConfigManager.DEFAULT_API_CONFIG,
182
+ ...this.config.api,
183
+ };
184
+ this.config.mobile = {
185
+ ...ConfigManager.DEFAULT_MOBILE_CONFIG,
186
+ ...this.config.mobile,
187
+ };
188
+ this.loadedSources.push("default");
189
+ return this;
190
+ }
191
+ /**
192
+ * Get the full framework configuration
193
+ */
194
+ getConfig() {
195
+ return this.config;
196
+ }
197
+ /**
198
+ * Get web configuration
199
+ */
200
+ getWebConfig() {
201
+ return this.config.web || ConfigManager.DEFAULT_WEB_CONFIG;
202
+ }
203
+ /**
204
+ * Get API configuration
205
+ */
206
+ getApiConfig() {
207
+ return this.config.api || ConfigManager.DEFAULT_API_CONFIG;
208
+ }
209
+ /**
210
+ * Get mobile configuration
211
+ */
212
+ getMobileConfig() {
213
+ return this.config.mobile || ConfigManager.DEFAULT_MOBILE_CONFIG;
214
+ }
215
+ /**
216
+ * Get configuration for a specific platform
217
+ */
218
+ getConfigForPlatform(platform) {
219
+ switch (platform) {
220
+ case types_1.Platform.WEB:
221
+ return this.getWebConfig();
222
+ case types_1.Platform.API:
223
+ return this.getApiConfig();
224
+ case types_1.Platform.MOBILE:
225
+ return this.getMobileConfig();
226
+ default:
227
+ throw new Error(`Unknown platform: ${platform}`);
228
+ }
229
+ }
230
+ /**
231
+ * Get loaded sources
232
+ */
233
+ getLoadedSources() {
234
+ return this.loadedSources;
235
+ }
236
+ /**
237
+ * Validate the configuration
238
+ */
239
+ validate() {
240
+ const errors = [];
241
+ // Validate web config
242
+ if (this.config.web) {
243
+ if (!Object.values(types_1.BrowserType).includes(this.config.web.browser)) {
244
+ errors.push(`Invalid browser type: ${this.config.web.browser}`);
245
+ }
246
+ }
247
+ // Validate API config
248
+ if (this.config.api) {
249
+ if (!this.config.api.baseURL) {
250
+ errors.push("API baseURL is required");
251
+ }
252
+ }
253
+ // Validate mobile config
254
+ if (this.config.mobile) {
255
+ if (!this.config.mobile.deviceName) {
256
+ errors.push("Mobile deviceName is required");
257
+ }
258
+ if (!Object.values(types_1.MobilePlatform).includes(this.config.mobile.platform)) {
259
+ errors.push(`Invalid mobile platform: ${this.config.mobile.platform}`);
260
+ }
261
+ }
262
+ return {
263
+ valid: errors.length === 0,
264
+ errors,
265
+ };
266
+ }
267
+ /**
268
+ * Set a specific configuration value
269
+ */
270
+ set(key, value) {
271
+ this.config[key] = value;
272
+ return this;
273
+ }
274
+ /**
275
+ * Get a specific configuration value
276
+ */
277
+ get(key) {
278
+ return this.config[key];
279
+ }
280
+ /**
281
+ * Merge configuration
282
+ */
283
+ mergeConfig(config) {
284
+ if (config.web) {
285
+ this.config.web = { ...this.config.web, ...config.web };
286
+ }
287
+ if (config.api) {
288
+ this.config.api = { ...this.config.api, ...config.api };
289
+ }
290
+ if (config.mobile) {
291
+ this.config.mobile = { ...this.config.mobile, ...config.mobile };
292
+ }
293
+ if (config.globalTimeout !== undefined) {
294
+ this.config.globalTimeout = config.globalTimeout;
295
+ }
296
+ if (config.parallel) {
297
+ this.config.parallel = { ...this.config.parallel, ...config.parallel };
298
+ }
299
+ if (config.reporting) {
300
+ this.config.reporting = { ...this.config.reporting, ...config.reporting };
301
+ }
302
+ }
303
+ /**
304
+ * Parse web config from environment variables
305
+ */
306
+ parseWebConfigFromEnv() {
307
+ return {
308
+ browser: this.getEnvEnum("BROWSER", types_1.BrowserType, types_1.BrowserType.CHROMIUM),
309
+ headless: this.getEnvBoolean("HEADLESS", false),
310
+ baseURL: this.getEnvString("BASE_URL", ""),
311
+ viewport: {
312
+ width: this.getEnvNumber("VIEWPORT_WIDTH", 1920),
313
+ height: this.getEnvNumber("VIEWPORT_HEIGHT", 1080),
314
+ },
315
+ timeout: this.getEnvNumber("GLOBAL_TIMEOUT", 30000),
316
+ slowMo: this.getEnvNumber("SLOW_MO", 0),
317
+ ignoreHTTPSErrors: this.getEnvBoolean("IGNORE_HTTPS_ERRORS", false),
318
+ deviceEmulation: this.getEnvString("DEVICE_EMULATION", undefined),
319
+ locale: this.getEnvString("LOCALE", "en-US"),
320
+ timezoneId: this.getEnvString("TIMEZONE_ID", undefined),
321
+ screenshotOnFailure: this.getEnvBoolean("SCREENSHOT_ON_FAILURE", true),
322
+ screenshotDir: this.getEnvString("SCREENSHOT_DIR", "./screenshots"),
323
+ recordVideo: this.getEnvBoolean("RECORD_VIDEO", false),
324
+ videoDir: this.getEnvString("VIDEO_DIR", "./videos"),
325
+ trace: this.getEnvBoolean("TRACE_ENABLED", false),
326
+ traceDir: this.getEnvString("TRACE_DIR", "./traces"),
327
+ storageState: this.getEnvString("STORAGE_STATE", undefined),
328
+ logLevel: this.getEnvEnum("LOG_LEVEL", types_1.LogLevel, types_1.LogLevel.INFO),
329
+ proxy: this.parseProxyFromEnv(),
330
+ };
331
+ }
332
+ /**
333
+ * Parse API config from environment variables
334
+ */
335
+ parseApiConfigFromEnv() {
336
+ const authUsername = this.getEnvString("API_AUTH_USERNAME", undefined);
337
+ const authPassword = this.getEnvString("API_AUTH_PASSWORD", undefined);
338
+ return {
339
+ baseURL: this.getEnvString("API_BASE_URL", ""),
340
+ timeout: this.getEnvNumber("API_TIMEOUT", 30000),
341
+ ignoreHTTPSErrors: this.getEnvBoolean("IGNORE_HTTPS_ERRORS", false),
342
+ enableLogging: this.getEnvBoolean("API_LOGGING", true),
343
+ retryCount: this.getEnvNumber("API_RETRY_COUNT", 3),
344
+ retryDelay: this.getEnvNumber("API_RETRY_DELAY", 1000),
345
+ logLevel: this.getEnvEnum("LOG_LEVEL", types_1.LogLevel, types_1.LogLevel.INFO),
346
+ httpCredentials: authUsername && authPassword
347
+ ? { username: authUsername, password: authPassword }
348
+ : undefined,
349
+ };
350
+ }
351
+ /**
352
+ * Parse mobile config from environment variables
353
+ */
354
+ parseMobileConfigFromEnv() {
355
+ const platform = this.getEnvEnum("MOBILE_PLATFORM", types_1.MobilePlatform, types_1.MobilePlatform.ANDROID);
356
+ return {
357
+ platform,
358
+ deviceName: this.getEnvString("DEVICE_NAME", ""),
359
+ platformVersion: this.getEnvString("PLATFORM_VERSION", undefined),
360
+ app: this.getEnvString("APP_PATH", undefined),
361
+ bundleId: this.getEnvString("BUNDLE_ID", undefined),
362
+ appPackage: this.getEnvString("APP_PACKAGE", undefined),
363
+ appActivity: this.getEnvString("APP_ACTIVITY", undefined),
364
+ automationName: platform === types_1.MobilePlatform.ANDROID
365
+ ? this.getEnvString("AUTOMATION_NAME", "UiAutomator2")
366
+ : this.getEnvString("IOS_AUTOMATION_NAME", "XCUITest"),
367
+ udid: this.getEnvString("UDID", undefined),
368
+ appiumHost: this.getEnvString("APPIUM_HOST", "localhost"),
369
+ appiumPort: this.getEnvNumber("APPIUM_PORT", 4723),
370
+ appiumPath: this.getEnvString("APPIUM_PATH", "/"),
371
+ noReset: this.getEnvBoolean("NO_RESET", true),
372
+ fullReset: this.getEnvBoolean("FULL_RESET", false),
373
+ autoAcceptAlerts: this.getEnvBoolean("AUTO_ACCEPT_ALERTS", false),
374
+ autoDismissAlerts: this.getEnvBoolean("AUTO_DISMISS_ALERTS", false),
375
+ newCommandTimeout: this.getEnvNumber("NEW_COMMAND_TIMEOUT", 120),
376
+ orientation: this.getEnvString("ORIENTATION", "PORTRAIT"),
377
+ timeout: this.getEnvNumber("GLOBAL_TIMEOUT", 60000),
378
+ screenshotOnFailure: this.getEnvBoolean("SCREENSHOT_ON_FAILURE", true),
379
+ screenshotDir: this.getEnvString("SCREENSHOT_DIR", "./screenshots"),
380
+ logLevel: this.getEnvEnum("LOG_LEVEL", types_1.LogLevel, types_1.LogLevel.INFO),
381
+ webviewConnectTimeout: this.getEnvNumber("WEBVIEW_CONNECT_TIMEOUT", 5000),
382
+ enablePerformanceLogging: this.getEnvBoolean("ENABLE_PERFORMANCE_LOGGING", false),
383
+ useSimulator: this.getEnvBoolean("USE_SIMULATOR", false),
384
+ useEmulator: this.getEnvBoolean("USE_EMULATOR", false),
385
+ avd: this.getEnvString("AVD_NAME", undefined),
386
+ };
387
+ }
388
+ /**
389
+ * Parse proxy configuration from environment
390
+ */
391
+ parseProxyFromEnv() {
392
+ const server = this.getEnvString("PROXY_SERVER", undefined);
393
+ if (!server) {
394
+ return undefined;
395
+ }
396
+ return {
397
+ server,
398
+ username: this.getEnvString("PROXY_USERNAME", undefined),
399
+ password: this.getEnvString("PROXY_PASSWORD", undefined),
400
+ };
401
+ }
402
+ getEnvString(key, defaultValue) {
403
+ return process.env[key] || defaultValue;
404
+ }
405
+ /**
406
+ * Get number from environment
407
+ */
408
+ getEnvNumber(key, defaultValue) {
409
+ const value = process.env[key];
410
+ if (value === undefined) {
411
+ return defaultValue;
412
+ }
413
+ const parsed = parseInt(value, 10);
414
+ return isNaN(parsed) ? defaultValue : parsed;
415
+ }
416
+ /**
417
+ * Get boolean from environment
418
+ */
419
+ getEnvBoolean(key, defaultValue) {
420
+ const value = process.env[key];
421
+ if (value === undefined) {
422
+ return defaultValue;
423
+ }
424
+ return value.toLowerCase() === "true" || value === "1";
425
+ }
426
+ /**
427
+ * Get enum value from environment
428
+ */
429
+ getEnvEnum(key, enumObj, defaultValue) {
430
+ const value = process.env[key];
431
+ if (value === undefined) {
432
+ return defaultValue;
433
+ }
434
+ const enumValues = Object.values(enumObj);
435
+ if (enumValues.includes(value)) {
436
+ return value;
437
+ }
438
+ return defaultValue;
439
+ }
440
+ /**
441
+ * Export configuration to JSON file
442
+ */
443
+ exportToFile(filePath) {
444
+ const absolutePath = path.resolve(process.cwd(), filePath);
445
+ const dir = path.dirname(absolutePath);
446
+ if (!fs.existsSync(dir)) {
447
+ fs.mkdirSync(dir, { recursive: true });
448
+ }
449
+ fs.writeFileSync(absolutePath, JSON.stringify(this.config, null, 2));
450
+ this.logger.info(`Configuration exported to: ${absolutePath}`);
451
+ }
452
+ /**
453
+ * Print configuration summary
454
+ */
455
+ printSummary() {
456
+ this.logger.info("=== Configuration Summary ===");
457
+ this.logger.info(`Sources loaded: ${this.loadedSources.join(", ")}`);
458
+ if (this.config.web) {
459
+ this.logger.info(`Web: browser=${this.config.web.browser}, headless=${this.config.web.headless}`);
460
+ }
461
+ if (this.config.api) {
462
+ this.logger.info(`API: baseURL=${this.config.api.baseURL}`);
463
+ }
464
+ if (this.config.mobile) {
465
+ this.logger.info(`Mobile: platform=${this.config.mobile.platform}, device=${this.config.mobile.deviceName}`);
466
+ }
467
+ }
468
+ }
469
+ exports.ConfigManager = ConfigManager;
470
+ // Export convenience function
471
+ const getConfig = () => ConfigManager.getInstance();
472
+ exports.getConfig = getConfig;
473
+ //# sourceMappingURL=config.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.manager.js","sourceRoot":"","sources":["../../src/utils/config.manager.ts"],"names":[],"mappings":"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"}