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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 <rahulr/>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,225 @@
1
+ # Playwright-Core Framework
2
+
3
+ A unified automation framework supporting **Web** (Playwright), **API** (Playwright), and **Mobile** (WebdriverIO + Appium) automation.
4
+
5
+ ## 🎯 Features
6
+
7
+ - **Web Automation**: Powered by Playwright for modern web testing
8
+ - **API Testing**: Built-in API client using Playwright's request context
9
+ - **Mobile Automation**: WebdriverIO + Appium integration for iOS/Android
10
+ - **Unified Interface**: Consistent driver pattern across all platforms
11
+ - **TypeScript First**: Full type safety and IntelliSense support
12
+ - **Modular Design**: Import only what you need
13
+
14
+ ## 📁 Project Structure
15
+
16
+ ``` shell
17
+ playwright-core/
18
+ ├── src/
19
+ │ ├── core/ # Core abstractions & base classes
20
+ │ ├── web/ # Playwright Web driver & methods
21
+ │ ├── api/ # Playwright API client & methods
22
+ │ ├── mobile/ # WebdriverIO + Appium driver & methods
23
+ │ ├── utils/ # Common utilities (logger, waits, etc.)
24
+ │ ├── config/ # Configuration management
25
+ │ └── types/ # TypeScript interfaces & types
26
+ ├── examples/ # Usage examples
27
+ ├── docs/ # Documentation
28
+ ├── package.json
29
+ ├── tsconfig.json
30
+ └── README.md
31
+ ```
32
+
33
+ ## 🚀 Installation
34
+
35
+ ### Prerequisites
36
+
37
+ - Node.js >= 18.0.0
38
+ - npm >= 9.0.0
39
+
40
+ ### As a Dependency (for other projects)
41
+
42
+ ```bash
43
+ npm install playwright-core
44
+ ```
45
+
46
+ ### For Development
47
+
48
+ ```bash
49
+ # Clone the repository
50
+ git clone <repository-url>
51
+ cd playwright-core
52
+
53
+ # Install dependencies
54
+ npm install
55
+
56
+ # Install Playwright browsers
57
+ npx playwright install
58
+
59
+ # Build the project
60
+ npm run build
61
+ ```
62
+
63
+ ### Mobile Testing Prerequisites (Optional)
64
+
65
+ For mobile automation, you'll need:
66
+
67
+ 1. **Appium Server**
68
+
69
+ ``` bash
70
+ npm install -g appium
71
+ appium driver install uiautomator2 # For Android
72
+ appium driver install xcuitest # For iOS
73
+ ```
74
+
75
+ 2. **Android Setup**
76
+ - Android SDK installed
77
+ - ANDROID_HOME environment variable set
78
+ - Android emulator or real device connected
79
+
80
+ 3. **iOS Setup** (macOS only)
81
+ - Xcode installed
82
+ - iOS Simulator or real device connected
83
+
84
+ ## 📖 Usage
85
+
86
+ ### Web Automation
87
+
88
+ ```typescript
89
+ import { WebDriver, WebConfig } from 'playwright-core';
90
+
91
+ const config: WebConfig = {
92
+ browser: 'chromium',
93
+ headless: false,
94
+ baseURL: 'https://example.com'
95
+ };
96
+
97
+ const driver = new WebDriver(config);
98
+ await driver.initialize();
99
+
100
+ // Use the driver
101
+ const page = driver.getPage();
102
+ await page.goto('/login');
103
+
104
+ await driver.quit();
105
+ ```
106
+
107
+ ### API Testing
108
+
109
+ ```typescript
110
+ import { ApiClient, ApiConfig } from 'playwright-core';
111
+
112
+ const config: ApiConfig = {
113
+ baseURL: 'https://api.example.com',
114
+ headers: {
115
+ 'Authorization': 'Bearer token'
116
+ }
117
+ };
118
+
119
+ const api = new ApiClient(config);
120
+ await api.initialize();
121
+
122
+ const response = await api.get('/users');
123
+ console.log(response.data);
124
+
125
+ await api.dispose();
126
+ ```
127
+
128
+ ### Mobile Automation
129
+
130
+ ```typescript
131
+ import { MobileDriver, MobileConfig } from 'playwright-core';
132
+
133
+ const config: MobileConfig = {
134
+ platform: 'android',
135
+ deviceName: 'Pixel 6',
136
+ app: '/path/to/app.apk',
137
+ automationName: 'UiAutomator2'
138
+ };
139
+
140
+ const driver = new MobileDriver(config);
141
+ await driver.initialize();
142
+
143
+ // Use WebdriverIO commands
144
+ await driver.click('~loginButton');
145
+
146
+ await driver.quit();
147
+ ```
148
+
149
+ ## 🔧 Configuration
150
+
151
+ ### Environment Variables
152
+
153
+ Create a `.env` file in your project root:
154
+
155
+ ```env
156
+ # Platform Selection
157
+ PLATFORM=web # web | api | mobile
158
+
159
+ # Web Configuration
160
+ BROWSER=chromium # chromium | firefox | webkit
161
+ HEADLESS=false
162
+ BASE_URL=https://example.com
163
+ VIEWPORT_WIDTH=1920
164
+ VIEWPORT_HEIGHT=1080
165
+
166
+ # API Configuration
167
+ API_BASE_URL=https://api.example.com
168
+ API_TIMEOUT=30000
169
+
170
+ # Mobile Configuration
171
+ MOBILE_PLATFORM=android # android | ios
172
+ DEVICE_NAME=Pixel 6
173
+ APP_PATH=/path/to/app
174
+ APPIUM_HOST=localhost
175
+ APPIUM_PORT=4723
176
+ ```
177
+
178
+ ## 🛠️ Development
179
+
180
+ ### Build
181
+
182
+ ```bash
183
+ npm run build
184
+ ```
185
+
186
+ ### Watch Mode
187
+
188
+ ```bash
189
+ npm run build:watch
190
+ ```
191
+
192
+ ### Lint
193
+
194
+ ```bash
195
+ npm run lint
196
+ npm run lint:fix
197
+ ```
198
+
199
+ ### Clean
200
+
201
+ ```bash
202
+ npm run clean
203
+ ```
204
+
205
+ ## 📦 Publishing as NPM Module
206
+
207
+ ```bash
208
+ # Build the project
209
+ npm run build
210
+
211
+ # Publish (requires npm login)
212
+ npm publish --access public
213
+ ```
214
+
215
+ ## 🤝 Contributing
216
+
217
+ 1. Fork the repository
218
+ 2. Create a feature branch
219
+ 3. Make your changes
220
+ 4. Run linting and build
221
+ 5. Submit a pull request
222
+
223
+ ## 📄 License
224
+
225
+ MIT
@@ -0,0 +1,196 @@
1
+ import { ApiResponse, AssertionOptions } from "../types";
2
+ import { Logger } from "../utils";
3
+ /**
4
+ * Soft assertion result
5
+ */
6
+ export interface ApiSoftAssertionResult {
7
+ passed: boolean;
8
+ message: string;
9
+ expected?: unknown;
10
+ actual?: unknown;
11
+ }
12
+ /**
13
+ * JSON Schema type (simplified)
14
+ */
15
+ export interface JsonSchema {
16
+ type?: string | string[];
17
+ properties?: Record<string, JsonSchema>;
18
+ required?: string[];
19
+ items?: JsonSchema;
20
+ enum?: unknown[];
21
+ minimum?: number;
22
+ maximum?: number;
23
+ minLength?: number;
24
+ maxLength?: number;
25
+ pattern?: string;
26
+ additionalProperties?: boolean | JsonSchema;
27
+ }
28
+ /**
29
+ * API Assertions class providing assertion methods for API responses.
30
+ */
31
+ export declare class ApiAssertions {
32
+ private logger;
33
+ private softErrors;
34
+ constructor(logger?: Logger);
35
+ /**
36
+ * Get soft assertion errors
37
+ */
38
+ getSoftErrors(): ApiSoftAssertionResult[];
39
+ /**
40
+ * Clear soft assertion errors
41
+ */
42
+ clearSoftErrors(): void;
43
+ /**
44
+ * Check if all soft assertions passed
45
+ */
46
+ allSoftAssertionsPassed(): boolean;
47
+ /**
48
+ * Assert all soft assertions and throw if any failed
49
+ */
50
+ assertAllSoftAssertions(): void;
51
+ /**
52
+ * Handle assertion result
53
+ */
54
+ private handleAssertion;
55
+ /**
56
+ * Assert response status code equals expected
57
+ */
58
+ assertStatus<T>(response: ApiResponse<T>, expectedStatus: number, options?: AssertionOptions): void;
59
+ /**
60
+ * Assert response status is 200 OK
61
+ */
62
+ assertOk<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
63
+ /**
64
+ * Assert response status is 201 Created
65
+ */
66
+ assertCreated<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
67
+ /**
68
+ * Assert response status is 204 No Content
69
+ */
70
+ assertNoContent<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
71
+ /**
72
+ * Assert response status is 400 Bad Request
73
+ */
74
+ assertBadRequest<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
75
+ /**
76
+ * Assert response status is 401 Unauthorized
77
+ */
78
+ assertUnauthorized<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
79
+ /**
80
+ * Assert response status is 403 Forbidden
81
+ */
82
+ assertForbidden<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
83
+ /**
84
+ * Assert response status is 404 Not Found
85
+ */
86
+ assertNotFound<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
87
+ /**
88
+ * Assert response status is 500 Internal Server Error
89
+ */
90
+ assertServerError<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
91
+ /**
92
+ * Assert response status is in range
93
+ */
94
+ assertStatusInRange<T>(response: ApiResponse<T>, min: number, max: number, options?: AssertionOptions): void;
95
+ /**
96
+ * Assert response is successful (2xx)
97
+ */
98
+ assertSuccess<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
99
+ /**
100
+ * Assert response is client error (4xx)
101
+ */
102
+ assertClientError<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
103
+ /**
104
+ * Assert response is server error (5xx)
105
+ */
106
+ assertServerErrorRange<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
107
+ /**
108
+ * Assert response has header
109
+ */
110
+ assertHasHeader<T>(response: ApiResponse<T>, headerName: string, options?: AssertionOptions): void;
111
+ /**
112
+ * Assert response header equals value
113
+ */
114
+ assertHeader<T>(response: ApiResponse<T>, headerName: string, expectedValue: string | RegExp, options?: AssertionOptions): void;
115
+ /**
116
+ * Assert response header contains value
117
+ */
118
+ assertHeaderContains<T>(response: ApiResponse<T>, headerName: string, expectedValue: string, options?: AssertionOptions): void;
119
+ /**
120
+ * Assert content type
121
+ */
122
+ assertContentType<T>(response: ApiResponse<T>, expectedType: string, options?: AssertionOptions): void;
123
+ /**
124
+ * Assert JSON content type
125
+ */
126
+ assertJsonContentType<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
127
+ /**
128
+ * Assert response body equals expected
129
+ */
130
+ assertBody<T>(response: ApiResponse<T>, expected: T, options?: AssertionOptions): void;
131
+ /**
132
+ * Assert response body contains key
133
+ */
134
+ assertBodyHasKey<T>(response: ApiResponse<T>, key: string, options?: AssertionOptions): void;
135
+ /**
136
+ * Assert response body has nested key (dot notation)
137
+ */
138
+ assertBodyHasPath<T>(response: ApiResponse<T>, path: string, options?: AssertionOptions): void;
139
+ /**
140
+ * Assert response body value at path equals expected
141
+ */
142
+ assertBodyValue<T, V>(response: ApiResponse<T>, path: string, expected: V, options?: AssertionOptions): void;
143
+ /**
144
+ * Assert response body value at path matches regex
145
+ */
146
+ assertBodyMatches<T>(response: ApiResponse<T>, path: string, pattern: RegExp, options?: AssertionOptions): void;
147
+ /**
148
+ * Assert response body is array
149
+ */
150
+ assertBodyIsArray<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
151
+ /**
152
+ * Assert response body array length
153
+ */
154
+ assertBodyArrayLength<T>(response: ApiResponse<T>, expectedLength: number, options?: AssertionOptions): void;
155
+ /**
156
+ * Assert response body array length is greater than
157
+ */
158
+ assertBodyArrayLengthGreaterThan<T>(response: ApiResponse<T>, minLength: number, options?: AssertionOptions): void;
159
+ /**
160
+ * Assert response body is not empty
161
+ */
162
+ assertBodyNotEmpty<T>(response: ApiResponse<T>, options?: AssertionOptions): void;
163
+ /**
164
+ * Assert response time is less than expected
165
+ */
166
+ assertResponseTime<T>(response: ApiResponse<T>, maxTimeMs: number, options?: AssertionOptions): void;
167
+ /**
168
+ * Assert response body matches JSON schema (simplified)
169
+ */
170
+ assertSchema<T>(response: ApiResponse<T>, schema: JsonSchema, options?: AssertionOptions): void;
171
+ /**
172
+ * Simple schema validation
173
+ */
174
+ private validateSchema;
175
+ /**
176
+ * Get value by dot notation path
177
+ */
178
+ private getValueByPath;
179
+ /**
180
+ * Assert condition is true
181
+ */
182
+ assertTrue(condition: boolean, message: string, options?: AssertionOptions): void;
183
+ /**
184
+ * Assert condition is false
185
+ */
186
+ assertFalse(condition: boolean, message: string, options?: AssertionOptions): void;
187
+ /**
188
+ * Assert values are equal
189
+ */
190
+ assertEqual<T>(actual: T, expected: T, message?: string, options?: AssertionOptions): void;
191
+ /**
192
+ * Always fail with message
193
+ */
194
+ fail(message: string, options?: AssertionOptions): void;
195
+ }
196
+ //# sourceMappingURL=api.assertions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.assertions.d.ts","sourceRoot":"","sources":["../../src/api/api.assertions.ts"],"names":[],"mappings":"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"}