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,264 @@
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.BaseDriver = void 0;
37
+ const utils_1 = require("../utils");
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ /**
41
+ * Abstract base driver class that all platform drivers must extend.
42
+ * Provides common functionality and enforces consistent API across platforms.
43
+ */
44
+ class BaseDriver {
45
+ /** Platform type */
46
+ platform;
47
+ /** Driver configuration */
48
+ config;
49
+ /** Logger instance */
50
+ logger;
51
+ /** Session ID */
52
+ sessionId;
53
+ /** Initialization state */
54
+ initialized = false;
55
+ /** Session start time */
56
+ startTime;
57
+ /** Implicit wait timeout */
58
+ implicitWaitTimeout = 0;
59
+ /**
60
+ * Create a new BaseDriver instance
61
+ * @param platform - The platform type (web, api, mobile)
62
+ * @param config - Driver configuration
63
+ * @param logger - Optional logger instance
64
+ */
65
+ constructor(platform, config, logger) {
66
+ this.platform = platform;
67
+ this.config = config;
68
+ this.logger = logger || utils_1.Logger.createLogger(platform);
69
+ // Set default timeout from config
70
+ if (config.timeout) {
71
+ this.implicitWaitTimeout = config.timeout;
72
+ }
73
+ }
74
+ /**
75
+ * Quit the driver and cleanup - can be overridden by subclasses
76
+ */
77
+ async quit() {
78
+ this.logger.info(`Quitting ${this.platform} driver`, {
79
+ sessionId: this.sessionId,
80
+ });
81
+ this.initialized = false;
82
+ this.sessionId = undefined;
83
+ this.startTime = undefined;
84
+ }
85
+ /**
86
+ * Check if driver is initialized
87
+ */
88
+ isInitialized() {
89
+ return this.initialized;
90
+ }
91
+ /**
92
+ * Get current platform
93
+ */
94
+ getPlatform() {
95
+ return this.platform;
96
+ }
97
+ /**
98
+ * Get session ID
99
+ */
100
+ getSessionId() {
101
+ return this.sessionId;
102
+ }
103
+ /**
104
+ * Get driver status
105
+ */
106
+ getStatus() {
107
+ return {
108
+ isInitialized: this.initialized,
109
+ sessionId: this.sessionId,
110
+ platform: this.platform,
111
+ startTime: this.startTime,
112
+ info: {
113
+ implicitWaitTimeout: this.implicitWaitTimeout,
114
+ config: this.getSafeConfig(),
115
+ },
116
+ };
117
+ }
118
+ /**
119
+ * Set implicit wait timeout
120
+ */
121
+ async setImplicitWait(timeout) {
122
+ this.implicitWaitTimeout = timeout;
123
+ this.logger.debug(`Set implicit wait to ${timeout}ms`);
124
+ }
125
+ /**
126
+ * Get implicit wait timeout
127
+ */
128
+ getImplicitWait() {
129
+ return this.implicitWaitTimeout;
130
+ }
131
+ /**
132
+ * Get the configuration
133
+ */
134
+ getConfig() {
135
+ return this.config;
136
+ }
137
+ /**
138
+ * Get the logger instance
139
+ */
140
+ getLogger() {
141
+ return this.logger;
142
+ }
143
+ /**
144
+ * Ensure driver is initialized, throw error if not
145
+ */
146
+ ensureInitialized(operation) {
147
+ if (!this.initialized) {
148
+ throw new utils_1.DriverNotInitializedError(this.platform, operation);
149
+ }
150
+ }
151
+ /**
152
+ * Generate a new session ID
153
+ */
154
+ generateSessionId() {
155
+ this.sessionId = (0, utils_1.generateId)(`${this.platform}-session`);
156
+ return this.sessionId;
157
+ }
158
+ /**
159
+ * Mark driver as initialized
160
+ */
161
+ markInitialized() {
162
+ this.initialized = true;
163
+ this.startTime = new Date();
164
+ this.logger.info(`${this.platform} driver initialized`, {
165
+ sessionId: this.sessionId,
166
+ startTime: this.startTime.toISOString(),
167
+ });
168
+ }
169
+ /**
170
+ * Save screenshot to file
171
+ */
172
+ async saveScreenshot(buffer, options) {
173
+ const screenshotDir = this.config.screenshotDir || "./screenshots";
174
+ (0, utils_1.ensureDir)(screenshotDir);
175
+ const filename = options?.path || this.generateScreenshotFilename(options?.type || "png");
176
+ const fullPath = path.isAbsolute(filename)
177
+ ? filename
178
+ : path.join(screenshotDir, filename);
179
+ // Ensure directory exists for the full path
180
+ (0, utils_1.ensureDir)(path.dirname(fullPath));
181
+ fs.writeFileSync(fullPath, buffer);
182
+ this.logger.screenshot(fullPath);
183
+ return fullPath;
184
+ }
185
+ /**
186
+ * Generate a unique screenshot filename
187
+ */
188
+ generateScreenshotFilename(extension = "png") {
189
+ const timestamp = (0, utils_1.formatTimestamp)(new Date(), "YYYY-MM-DD_HH-mm-ss-SSS");
190
+ return `screenshot_${timestamp}_${(0, utils_1.generateId)()}.${extension}`;
191
+ }
192
+ /**
193
+ * Get safe config (without sensitive data) for logging
194
+ */
195
+ getSafeConfig() {
196
+ const safeConfig = { ...this.config };
197
+ // Remove sensitive fields
198
+ const sensitiveFields = [
199
+ "password",
200
+ "token",
201
+ "apiKey",
202
+ "secret",
203
+ "credentials",
204
+ ];
205
+ for (const field of sensitiveFields) {
206
+ if (field in safeConfig) {
207
+ safeConfig[field] = "***REDACTED***";
208
+ }
209
+ }
210
+ return safeConfig;
211
+ }
212
+ /**
213
+ * Log action start
214
+ */
215
+ logActionStart(action, details) {
216
+ this.logger.actionStart(action, details);
217
+ return Date.now();
218
+ }
219
+ /**
220
+ * Log action end
221
+ */
222
+ logActionEnd(action, startTime, details) {
223
+ const duration = Date.now() - startTime;
224
+ this.logger.actionEnd(action, duration, details);
225
+ }
226
+ /**
227
+ * Log action failure
228
+ */
229
+ logActionFailed(action, error, details) {
230
+ this.logger.actionFailed(action, error, details);
231
+ }
232
+ /**
233
+ * Execute an action with logging
234
+ */
235
+ async executeAction(actionName, action, details) {
236
+ const startTime = this.logActionStart(actionName, details);
237
+ try {
238
+ const result = await action();
239
+ this.logActionEnd(actionName, startTime, details);
240
+ return result;
241
+ }
242
+ catch (error) {
243
+ this.logActionFailed(actionName, error, details);
244
+ throw error;
245
+ }
246
+ }
247
+ /**
248
+ * Get session duration in milliseconds
249
+ */
250
+ getSessionDuration() {
251
+ if (!this.startTime) {
252
+ return undefined;
253
+ }
254
+ return Date.now() - this.startTime.getTime();
255
+ }
256
+ /**
257
+ * Get timeout value (config or default)
258
+ */
259
+ getTimeout(overrideTimeout) {
260
+ return overrideTimeout ?? this.config.timeout ?? 30000;
261
+ }
262
+ }
263
+ exports.BaseDriver = BaseDriver;
264
+ //# sourceMappingURL=base.driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.driver.js","sourceRoot":"","sources":["../../src/core/base.driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { Platform, WebConfig, ApiConfig, MobileConfig, FrameworkConfig, IWebDriver, IApiDriver, IMobileDriver } from "../types";
2
+ import { Logger } from "../utils";
3
+ import { BaseDriver } from "./base.driver";
4
+ /**
5
+ * Driver creation options
6
+ */
7
+ export interface DriverOptions {
8
+ /** Override configuration */
9
+ config?: Partial<WebConfig | ApiConfig | MobileConfig>;
10
+ /** Custom logger */
11
+ logger?: Logger;
12
+ /** Auto-initialize driver */
13
+ autoInitialize?: boolean;
14
+ }
15
+ /**
16
+ * Registered driver class type
17
+ */
18
+ export type DriverClass<T extends BaseDriver = BaseDriver> = new (config: WebConfig | ApiConfig | MobileConfig, logger?: Logger) => T;
19
+ /**
20
+ * Factory class for creating platform-specific drivers.
21
+ * Supports registration of custom driver implementations.
22
+ */
23
+ export declare class DriverFactory {
24
+ /** Singleton instance */
25
+ private static instance;
26
+ /** Driver registry */
27
+ private registry;
28
+ /** Active drivers */
29
+ private activeDrivers;
30
+ /** Logger */
31
+ private logger;
32
+ /** Config manager */
33
+ private configManager;
34
+ constructor();
35
+ /**
36
+ * Get singleton instance
37
+ */
38
+ static getInstance(): DriverFactory;
39
+ /**
40
+ * Reset singleton instance (useful for testing)
41
+ */
42
+ static resetInstance(): void;
43
+ /**
44
+ * Register a driver class for a platform
45
+ */
46
+ register<T extends BaseDriver>(platform: Platform, driverClass: DriverClass<T>, defaultConfig: WebConfig | ApiConfig | MobileConfig): this;
47
+ /**
48
+ * Check if a driver is registered for a platform
49
+ */
50
+ isRegistered(platform: Platform): boolean;
51
+ /**
52
+ * Get registered platforms
53
+ */
54
+ getRegisteredPlatforms(): Platform[];
55
+ /**
56
+ * Create a driver for the specified platform
57
+ */
58
+ create<T extends BaseDriver>(platform: Platform, options?: DriverOptions): Promise<T>;
59
+ /**
60
+ * Create a web driver
61
+ */
62
+ createWebDriver(options?: DriverOptions): Promise<IWebDriver>;
63
+ /**
64
+ * Create an API driver
65
+ */
66
+ createApiDriver(options?: DriverOptions): Promise<IApiDriver>;
67
+ /**
68
+ * Create a mobile driver
69
+ */
70
+ createMobileDriver(options?: DriverOptions): Promise<IMobileDriver>;
71
+ /**
72
+ * Get configuration for a platform
73
+ */
74
+ private getConfigForPlatform;
75
+ /**
76
+ * Get an active driver by session ID
77
+ */
78
+ getDriver(sessionId: string): BaseDriver | undefined;
79
+ /**
80
+ * Get all active drivers
81
+ */
82
+ getActiveDrivers(): BaseDriver[];
83
+ /**
84
+ * Get active driver count
85
+ */
86
+ getActiveDriverCount(): number;
87
+ /**
88
+ * Quit a specific driver
89
+ */
90
+ quit(sessionId: string): Promise<void>;
91
+ /**
92
+ * Quit all active drivers
93
+ */
94
+ quitAll(): Promise<void>;
95
+ /**
96
+ * Remove a driver from tracking (without quitting)
97
+ */
98
+ untrack(sessionId: string): void;
99
+ /**
100
+ * Load configuration from environment/files
101
+ */
102
+ loadConfig(envPath?: string, configPath?: string): this;
103
+ /**
104
+ * Set framework configuration
105
+ */
106
+ setConfig(config: Partial<FrameworkConfig>): this;
107
+ /**
108
+ * Get current framework configuration
109
+ */
110
+ getConfig(): FrameworkConfig;
111
+ /**
112
+ * Validate configuration
113
+ */
114
+ validateConfig(): {
115
+ valid: boolean;
116
+ errors: string[];
117
+ };
118
+ }
119
+ export declare const getDriverFactory: () => DriverFactory;
120
+ //# sourceMappingURL=driver.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.factory.d.ts","sourceRoot":"","sources":["../../src/core/driver.factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDriverFactory = exports.DriverFactory = void 0;
4
+ const types_1 = require("../types");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Factory class for creating platform-specific drivers.
8
+ * Supports registration of custom driver implementations.
9
+ */
10
+ class DriverFactory {
11
+ /** Singleton instance */
12
+ static instance = null;
13
+ /** Driver registry */
14
+ registry = new Map();
15
+ /** Active drivers */
16
+ activeDrivers = new Map();
17
+ /** Logger */
18
+ logger;
19
+ /** Config manager */
20
+ configManager;
21
+ constructor() {
22
+ this.logger = utils_1.Logger.createLogger("DriverFactory");
23
+ this.configManager = utils_1.ConfigManager.getInstance();
24
+ }
25
+ /**
26
+ * Get singleton instance
27
+ */
28
+ static getInstance() {
29
+ if (!DriverFactory.instance) {
30
+ DriverFactory.instance = new DriverFactory();
31
+ }
32
+ return DriverFactory.instance;
33
+ }
34
+ /**
35
+ * Reset singleton instance (useful for testing)
36
+ */
37
+ static resetInstance() {
38
+ if (DriverFactory.instance) {
39
+ // Cleanup all active drivers
40
+ DriverFactory.instance.quitAll().catch(console.error);
41
+ }
42
+ DriverFactory.instance = null;
43
+ }
44
+ /**
45
+ * Register a driver class for a platform
46
+ */
47
+ register(platform, driverClass, defaultConfig) {
48
+ this.registry.set(platform, {
49
+ driverClass: driverClass,
50
+ defaultConfig,
51
+ });
52
+ this.logger.debug(`Registered driver for platform: ${platform}`);
53
+ return this;
54
+ }
55
+ /**
56
+ * Check if a driver is registered for a platform
57
+ */
58
+ isRegistered(platform) {
59
+ return this.registry.has(platform);
60
+ }
61
+ /**
62
+ * Get registered platforms
63
+ */
64
+ getRegisteredPlatforms() {
65
+ return Array.from(this.registry.keys());
66
+ }
67
+ /**
68
+ * Create a driver for the specified platform
69
+ */
70
+ async create(platform, options = {}) {
71
+ const entry = this.registry.get(platform);
72
+ if (!entry) {
73
+ throw new utils_1.ConfigurationError(`No driver registered for platform: ${platform}. ` +
74
+ `Available platforms: ${this.getRegisteredPlatforms().join(", ")}`);
75
+ }
76
+ // Get configuration
77
+ const baseConfig = this.getConfigForPlatform(platform);
78
+ const mergedConfig = {
79
+ ...entry.defaultConfig,
80
+ ...baseConfig,
81
+ ...options.config,
82
+ };
83
+ // Create logger
84
+ const logger = options.logger || utils_1.Logger.createLogger(platform);
85
+ // Create driver instance
86
+ this.logger.info(`Creating ${platform} driver`);
87
+ const driver = new entry.driverClass(mergedConfig, logger);
88
+ // Auto-initialize if requested
89
+ if (options.autoInitialize !== false) {
90
+ await driver.initialize();
91
+ }
92
+ // Track active driver
93
+ const sessionId = driver.getSessionId() || `temp-${Date.now()}`;
94
+ this.activeDrivers.set(sessionId, driver);
95
+ return driver;
96
+ }
97
+ /**
98
+ * Create a web driver
99
+ */
100
+ async createWebDriver(options = {}) {
101
+ return this.create(types_1.Platform.WEB, options);
102
+ }
103
+ /**
104
+ * Create an API driver
105
+ */
106
+ async createApiDriver(options = {}) {
107
+ return this.create(types_1.Platform.API, options);
108
+ }
109
+ /**
110
+ * Create a mobile driver
111
+ */
112
+ async createMobileDriver(options = {}) {
113
+ return this.create(types_1.Platform.MOBILE, options);
114
+ }
115
+ /**
116
+ * Get configuration for a platform
117
+ */
118
+ getConfigForPlatform(platform) {
119
+ switch (platform) {
120
+ case types_1.Platform.WEB:
121
+ return this.configManager.getWebConfig();
122
+ case types_1.Platform.API:
123
+ return this.configManager.getApiConfig();
124
+ case types_1.Platform.MOBILE:
125
+ return this.configManager.getMobileConfig();
126
+ default:
127
+ throw new utils_1.ConfigurationError(`Unknown platform: ${platform}`);
128
+ }
129
+ }
130
+ /**
131
+ * Get an active driver by session ID
132
+ */
133
+ getDriver(sessionId) {
134
+ return this.activeDrivers.get(sessionId);
135
+ }
136
+ /**
137
+ * Get all active drivers
138
+ */
139
+ getActiveDrivers() {
140
+ return Array.from(this.activeDrivers.values());
141
+ }
142
+ /**
143
+ * Get active driver count
144
+ */
145
+ getActiveDriverCount() {
146
+ return this.activeDrivers.size;
147
+ }
148
+ /**
149
+ * Quit a specific driver
150
+ */
151
+ async quit(sessionId) {
152
+ const driver = this.activeDrivers.get(sessionId);
153
+ if (driver) {
154
+ await driver.quit();
155
+ this.activeDrivers.delete(sessionId);
156
+ this.logger.info(`Driver quit: ${sessionId}`);
157
+ }
158
+ }
159
+ /**
160
+ * Quit all active drivers
161
+ */
162
+ async quitAll() {
163
+ this.logger.info(`Quitting all drivers (count: ${this.activeDrivers.size})`);
164
+ const quitPromises = Array.from(this.activeDrivers.entries()).map(async ([sessionId, driver]) => {
165
+ try {
166
+ await driver.quit();
167
+ this.logger.debug(`Driver quit: ${sessionId}`);
168
+ }
169
+ catch (error) {
170
+ this.logger.error(`Failed to quit driver ${sessionId}: ${error.message}`);
171
+ }
172
+ });
173
+ await Promise.all(quitPromises);
174
+ this.activeDrivers.clear();
175
+ }
176
+ /**
177
+ * Remove a driver from tracking (without quitting)
178
+ */
179
+ untrack(sessionId) {
180
+ this.activeDrivers.delete(sessionId);
181
+ }
182
+ /**
183
+ * Load configuration from environment/files
184
+ */
185
+ loadConfig(envPath, configPath) {
186
+ if (envPath) {
187
+ this.configManager.loadFromEnv(envPath);
188
+ }
189
+ else {
190
+ this.configManager.loadFromEnv();
191
+ }
192
+ if (configPath) {
193
+ this.configManager.loadFromFile(configPath);
194
+ }
195
+ this.configManager.applyDefaults();
196
+ return this;
197
+ }
198
+ /**
199
+ * Set framework configuration
200
+ */
201
+ setConfig(config) {
202
+ this.configManager.loadFromObject(config);
203
+ return this;
204
+ }
205
+ /**
206
+ * Get current framework configuration
207
+ */
208
+ getConfig() {
209
+ return this.configManager.getConfig();
210
+ }
211
+ /**
212
+ * Validate configuration
213
+ */
214
+ validateConfig() {
215
+ return this.configManager.validate();
216
+ }
217
+ }
218
+ exports.DriverFactory = DriverFactory;
219
+ // Export convenience function
220
+ const getDriverFactory = () => DriverFactory.getInstance();
221
+ exports.getDriverFactory = getDriverFactory;
222
+ //# sourceMappingURL=driver.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.factory.js","sourceRoot":"","sources":["../../src/core/driver.factory.ts"],"names":[],"mappings":"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"}