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,306 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retry = exports.waitFor = exports.sleep = exports.waitUtils = exports.WaitUtils = exports.RetryExhaustedError = exports.WaitTimeoutError = void 0;
4
+ const logger_1 = require("./logger");
5
+ /**
6
+ * Default wait options
7
+ */
8
+ const DEFAULT_WAIT_OPTIONS = {
9
+ timeout: 30000,
10
+ interval: 100,
11
+ message: "Wait condition not met",
12
+ };
13
+ /**
14
+ * Default retry options
15
+ */
16
+ const DEFAULT_RETRY_OPTIONS = {
17
+ maxRetries: 3,
18
+ retryDelay: 1000,
19
+ backoffMultiplier: 1.5,
20
+ retryOnErrors: [],
21
+ };
22
+ /**
23
+ * Wait timeout error
24
+ */
25
+ class WaitTimeoutError extends Error {
26
+ timeout;
27
+ constructor(message, timeout) {
28
+ super(message);
29
+ this.timeout = timeout;
30
+ this.name = "WaitTimeoutError";
31
+ }
32
+ }
33
+ exports.WaitTimeoutError = WaitTimeoutError;
34
+ /**
35
+ * Retry exhausted error
36
+ */
37
+ class RetryExhaustedError extends Error {
38
+ attempts;
39
+ lastError;
40
+ constructor(message, attempts, lastError) {
41
+ super(message);
42
+ this.attempts = attempts;
43
+ this.lastError = lastError;
44
+ this.name = "RetryExhaustedError";
45
+ }
46
+ }
47
+ exports.RetryExhaustedError = RetryExhaustedError;
48
+ /**
49
+ * Wait utilities class providing various wait mechanisms
50
+ */
51
+ class WaitUtils {
52
+ logger;
53
+ constructor(logger) {
54
+ this.logger = logger || logger_1.Logger.getInstance();
55
+ }
56
+ /**
57
+ * Sleep for specified milliseconds
58
+ */
59
+ async sleep(ms) {
60
+ return new Promise((resolve) => setTimeout(resolve, ms));
61
+ }
62
+ /**
63
+ * Wait for a condition to be truthy
64
+ * @param condition - Function that returns a value to check
65
+ * @param options - Wait options
66
+ * @returns The truthy value returned by condition
67
+ */
68
+ async waitFor(condition, options = {}) {
69
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
70
+ const startTime = Date.now();
71
+ while (Date.now() - startTime < opts.timeout) {
72
+ try {
73
+ const result = await condition();
74
+ if (result) {
75
+ return result;
76
+ }
77
+ }
78
+ catch (error) {
79
+ // Condition threw an error, continue waiting
80
+ this.logger.trace(`Wait condition threw error: ${error.message}`);
81
+ }
82
+ await this.sleep(opts.interval);
83
+ }
84
+ throw new WaitTimeoutError(`${opts.message} (timeout: ${opts.timeout}ms)`, opts.timeout);
85
+ }
86
+ /**
87
+ * Wait for a condition to match a predicate
88
+ * @param condition - Function that returns a value
89
+ * @param predicate - Function to check the value
90
+ * @param options - Wait options
91
+ */
92
+ async waitForCondition(condition, predicate, options = {}) {
93
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
94
+ const startTime = Date.now();
95
+ while (Date.now() - startTime < opts.timeout) {
96
+ try {
97
+ const result = await condition();
98
+ if (predicate(result)) {
99
+ return result;
100
+ }
101
+ }
102
+ catch (error) {
103
+ this.logger.trace(`Wait condition threw error: ${error.message}`);
104
+ }
105
+ await this.sleep(opts.interval);
106
+ }
107
+ throw new WaitTimeoutError(`${opts.message} (timeout: ${opts.timeout}ms)`, opts.timeout);
108
+ }
109
+ /**
110
+ * Wait for a condition to be false/falsy
111
+ */
112
+ async waitForNot(condition, options = {}) {
113
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
114
+ const startTime = Date.now();
115
+ while (Date.now() - startTime < opts.timeout) {
116
+ try {
117
+ const result = await condition();
118
+ if (!result) {
119
+ return;
120
+ }
121
+ }
122
+ catch (error) {
123
+ // Condition threw an error, consider it as falsy
124
+ return;
125
+ }
126
+ await this.sleep(opts.interval);
127
+ }
128
+ throw new WaitTimeoutError(`${opts.message} - condition did not become falsy (timeout: ${opts.timeout}ms)`, opts.timeout);
129
+ }
130
+ /**
131
+ * Wait for any of the conditions to be truthy
132
+ * @returns Object with index and result of the first truthy condition
133
+ */
134
+ async waitForAny(conditions, options = {}) {
135
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
136
+ const startTime = Date.now();
137
+ while (Date.now() - startTime < opts.timeout) {
138
+ for (let i = 0; i < conditions.length; i++) {
139
+ try {
140
+ const result = await conditions[i]();
141
+ if (result) {
142
+ return { index: i, result };
143
+ }
144
+ }
145
+ catch (error) {
146
+ // Continue to next condition
147
+ }
148
+ }
149
+ await this.sleep(opts.interval);
150
+ }
151
+ throw new WaitTimeoutError(`${opts.message} - none of the conditions were met (timeout: ${opts.timeout}ms)`, opts.timeout);
152
+ }
153
+ /**
154
+ * Wait for all conditions to be truthy
155
+ */
156
+ async waitForAll(conditions, options = {}) {
157
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
158
+ const startTime = Date.now();
159
+ while (Date.now() - startTime < opts.timeout) {
160
+ const results = [];
161
+ let allMet = true;
162
+ for (const condition of conditions) {
163
+ try {
164
+ const result = await condition();
165
+ if (result) {
166
+ results.push(result);
167
+ }
168
+ else {
169
+ allMet = false;
170
+ break;
171
+ }
172
+ }
173
+ catch (error) {
174
+ allMet = false;
175
+ break;
176
+ }
177
+ }
178
+ if (allMet && results.length === conditions.length) {
179
+ return results;
180
+ }
181
+ await this.sleep(opts.interval);
182
+ }
183
+ throw new WaitTimeoutError(`${opts.message} - not all conditions were met (timeout: ${opts.timeout}ms)`, opts.timeout);
184
+ }
185
+ /**
186
+ * Retry a function until it succeeds or retries are exhausted
187
+ */
188
+ async retry(fn, options = {}) {
189
+ const opts = { ...DEFAULT_RETRY_OPTIONS, ...options };
190
+ let lastError;
191
+ let delay = opts.retryDelay;
192
+ for (let attempt = 1; attempt <= opts.maxRetries + 1; attempt++) {
193
+ try {
194
+ return await fn();
195
+ }
196
+ catch (error) {
197
+ lastError = error;
198
+ // Check if we should retry on this error
199
+ if (opts.retryOnErrors.length > 0) {
200
+ const shouldRetry = opts.retryOnErrors.some((errType) => lastError?.name === errType ||
201
+ lastError?.message.includes(errType));
202
+ if (!shouldRetry) {
203
+ throw lastError;
204
+ }
205
+ }
206
+ if (attempt <= opts.maxRetries) {
207
+ this.logger.debug(`Retry attempt ${attempt}/${opts.maxRetries} after error: ${lastError.message}`);
208
+ await this.sleep(delay);
209
+ delay = Math.floor(delay * opts.backoffMultiplier);
210
+ }
211
+ }
212
+ }
213
+ throw new RetryExhaustedError(`Function failed after ${opts.maxRetries + 1} attempts: ${lastError?.message}`, opts.maxRetries + 1, lastError);
214
+ }
215
+ /**
216
+ * Retry with a condition check
217
+ */
218
+ async retryUntil(fn, predicate, options = {}) {
219
+ const opts = { ...DEFAULT_RETRY_OPTIONS, ...options };
220
+ let lastResult;
221
+ let delay = opts.retryDelay;
222
+ for (let attempt = 1; attempt <= opts.maxRetries + 1; attempt++) {
223
+ try {
224
+ lastResult = await fn();
225
+ if (predicate(lastResult)) {
226
+ return lastResult;
227
+ }
228
+ }
229
+ catch (error) {
230
+ this.logger.trace(`Retry attempt ${attempt} threw error: ${error.message}`);
231
+ }
232
+ if (attempt <= opts.maxRetries) {
233
+ this.logger.debug(`Retry attempt ${attempt}/${opts.maxRetries} - condition not met`);
234
+ await this.sleep(delay);
235
+ delay = Math.floor(delay * opts.backoffMultiplier);
236
+ }
237
+ }
238
+ throw new RetryExhaustedError(`Condition not met after ${opts.maxRetries + 1} attempts`, opts.maxRetries + 1);
239
+ }
240
+ /**
241
+ * Execute with timeout
242
+ */
243
+ async withTimeout(fn, timeout, message) {
244
+ return Promise.race([
245
+ fn(),
246
+ new Promise((_, reject) => {
247
+ setTimeout(() => {
248
+ reject(new WaitTimeoutError(message || `Operation timed out after ${timeout}ms`, timeout));
249
+ }, timeout);
250
+ }),
251
+ ]);
252
+ }
253
+ /**
254
+ * Poll a function at regular intervals
255
+ */
256
+ async poll(fn, interval, timeout) {
257
+ return this.waitFor(fn, { interval, timeout });
258
+ }
259
+ /**
260
+ * Wait for a value to stabilize (not change for a period)
261
+ */
262
+ async waitForStable(getValue, stableTime = 500, options = {}) {
263
+ const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };
264
+ const startTime = Date.now();
265
+ let lastValue;
266
+ let stableStartTime;
267
+ while (Date.now() - startTime < opts.timeout) {
268
+ const currentValue = await getValue();
269
+ if (lastValue === undefined ||
270
+ JSON.stringify(lastValue) !== JSON.stringify(currentValue)) {
271
+ lastValue = currentValue;
272
+ stableStartTime = Date.now();
273
+ }
274
+ else if (stableStartTime &&
275
+ Date.now() - stableStartTime >= stableTime) {
276
+ return currentValue;
277
+ }
278
+ await this.sleep(opts.interval);
279
+ }
280
+ throw new WaitTimeoutError(`Value did not stabilize within ${opts.timeout}ms`, opts.timeout);
281
+ }
282
+ /**
283
+ * Execute functions in sequence with delay between each
284
+ */
285
+ async sequence(fns, delayBetween = 0) {
286
+ const results = [];
287
+ for (let i = 0; i < fns.length; i++) {
288
+ results.push(await fns[i]());
289
+ if (delayBetween > 0 && i < fns.length - 1) {
290
+ await this.sleep(delayBetween);
291
+ }
292
+ }
293
+ return results;
294
+ }
295
+ }
296
+ exports.WaitUtils = WaitUtils;
297
+ // Export singleton instance
298
+ exports.waitUtils = new WaitUtils();
299
+ // Export convenience functions
300
+ const sleep = (ms) => exports.waitUtils.sleep(ms);
301
+ exports.sleep = sleep;
302
+ const waitFor = (condition, options) => exports.waitUtils.waitFor(condition, options);
303
+ exports.waitFor = waitFor;
304
+ const retry = (fn, options) => exports.waitUtils.retry(fn, options);
305
+ exports.retry = retry;
306
+ //# sourceMappingURL=wait.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.utils.js","sourceRoot":"","sources":["../../src/utils/wait.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Web Module - Playwright-based web automation
3
+ */
4
+ export { WebDriver } from "./web.driver";
5
+ export { WebPage, TypeOptions, ClickOptions, SelectOption, DragDropOptions, } from "./web.page";
6
+ export { WebAssertions, SoftAssertionResult } from "./web.assertions";
7
+ export type { Page, Browser, BrowserContext, Locator as PlaywrightLocator, FrameLocator, ElementHandle, Response, Request, Route, Dialog, Download, FileChooser, ConsoleMessage as PlaywrightConsoleMessage, } from "@playwright/test";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,YAAY,EACV,IAAI,EACJ,OAAO,EACP,cAAc,EACd,OAAO,IAAI,iBAAiB,EAC5B,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,WAAW,EACX,cAAc,IAAI,wBAAwB,GAC3C,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * Web Module - Playwright-based web automation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebAssertions = exports.WebPage = exports.WebDriver = void 0;
7
+ // Web Driver
8
+ var web_driver_1 = require("./web.driver");
9
+ Object.defineProperty(exports, "WebDriver", { enumerable: true, get: function () { return web_driver_1.WebDriver; } });
10
+ // Web Page (Element Interactions)
11
+ var web_page_1 = require("./web.page");
12
+ Object.defineProperty(exports, "WebPage", { enumerable: true, get: function () { return web_page_1.WebPage; } });
13
+ // Web Assertions
14
+ var web_assertions_1 = require("./web.assertions");
15
+ Object.defineProperty(exports, "WebAssertions", { enumerable: true, get: function () { return web_assertions_1.WebAssertions; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,aAAa;AACb,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,kCAAkC;AAClC,uCAMoB;AALlB,mGAAA,OAAO,OAAA;AAOT,iBAAiB;AACjB,mDAAsE;AAA7D,+GAAA,aAAa,OAAA"}
@@ -0,0 +1,164 @@
1
+ import { Page } from "@playwright/test";
2
+ import { Locator, AssertionOptions } from "../types";
3
+ import { Logger } from "../utils";
4
+ import { WebPage } from "./web.page";
5
+ /**
6
+ * Soft assertion result
7
+ */
8
+ export interface SoftAssertionResult {
9
+ passed: boolean;
10
+ message: string;
11
+ expected?: unknown;
12
+ actual?: unknown;
13
+ }
14
+ /**
15
+ * WebAssertions class providing assertion methods for Playwright.
16
+ */
17
+ export declare class WebAssertions {
18
+ private page;
19
+ private webPage;
20
+ private logger;
21
+ private softErrors;
22
+ constructor(page: Page, webPage: WebPage, logger?: Logger);
23
+ /**
24
+ * Get soft assertion errors
25
+ */
26
+ getSoftErrors(): SoftAssertionResult[];
27
+ /**
28
+ * Clear soft assertion errors
29
+ */
30
+ clearSoftErrors(): void;
31
+ /**
32
+ * Check if all soft assertions passed
33
+ */
34
+ allSoftAssertionsPassed(): boolean;
35
+ /**
36
+ * Assert all soft assertions and throw if any failed
37
+ */
38
+ assertAllSoftAssertions(): void;
39
+ /**
40
+ * Handle assertion result
41
+ */
42
+ private handleAssertion;
43
+ /**
44
+ * Get Playwright locator from string or Locator object
45
+ */
46
+ private getLocator;
47
+ /**
48
+ * Assert page title
49
+ */
50
+ assertTitle(expected: string | RegExp, options?: AssertionOptions): Promise<void>;
51
+ /**
52
+ * Assert page title contains
53
+ */
54
+ assertTitleContains(expected: string, options?: AssertionOptions): Promise<void>;
55
+ /**
56
+ * Assert page URL
57
+ */
58
+ assertUrl(expected: string | RegExp, options?: AssertionOptions): Promise<void>;
59
+ /**
60
+ * Assert page URL contains
61
+ */
62
+ assertUrlContains(expected: string, options?: AssertionOptions): Promise<void>;
63
+ /**
64
+ * Assert element is visible
65
+ */
66
+ assertVisible(locator: Locator | string, options?: AssertionOptions): Promise<void>;
67
+ /**
68
+ * Assert element is not visible / hidden
69
+ */
70
+ assertHidden(locator: Locator | string, options?: AssertionOptions): Promise<void>;
71
+ /**
72
+ * Assert element exists in DOM
73
+ */
74
+ assertExists(locator: Locator | string, options?: AssertionOptions): Promise<void>;
75
+ /**
76
+ * Assert element does not exist in DOM
77
+ */
78
+ assertNotExists(locator: Locator | string, options?: AssertionOptions): Promise<void>;
79
+ /**
80
+ * Assert element is enabled
81
+ */
82
+ assertEnabled(locator: Locator | string, options?: AssertionOptions): Promise<void>;
83
+ /**
84
+ * Assert element is disabled
85
+ */
86
+ assertDisabled(locator: Locator | string, options?: AssertionOptions): Promise<void>;
87
+ /**
88
+ * Assert checkbox/radio is checked
89
+ */
90
+ assertChecked(locator: Locator | string, options?: AssertionOptions): Promise<void>;
91
+ /**
92
+ * Assert checkbox/radio is not checked
93
+ */
94
+ assertNotChecked(locator: Locator | string, options?: AssertionOptions): Promise<void>;
95
+ /**
96
+ * Assert element is focused
97
+ */
98
+ assertFocused(locator: Locator | string, options?: AssertionOptions): Promise<void>;
99
+ /**
100
+ * Assert element has exact text
101
+ */
102
+ assertText(locator: Locator | string, expected: string | RegExp, options?: AssertionOptions): Promise<void>;
103
+ /**
104
+ * Assert element contains text
105
+ */
106
+ assertTextContains(locator: Locator | string, expected: string, options?: AssertionOptions): Promise<void>;
107
+ /**
108
+ * Assert element has empty text
109
+ */
110
+ assertTextEmpty(locator: Locator | string, options?: AssertionOptions): Promise<void>;
111
+ /**
112
+ * Assert input has value
113
+ */
114
+ assertValue(locator: Locator | string, expected: string | RegExp, options?: AssertionOptions): Promise<void>;
115
+ /**
116
+ * Assert input value contains
117
+ */
118
+ assertValueContains(locator: Locator | string, expected: string, options?: AssertionOptions): Promise<void>;
119
+ /**
120
+ * Assert element has attribute with value
121
+ */
122
+ assertAttribute(locator: Locator | string, name: string, expected: string | RegExp, options?: AssertionOptions): Promise<void>;
123
+ /**
124
+ * Assert element has attribute (any value)
125
+ */
126
+ assertHasAttribute(locator: Locator | string, name: string, options?: AssertionOptions): Promise<void>;
127
+ /**
128
+ * Assert element has CSS class
129
+ */
130
+ assertHasClass(locator: Locator | string, className: string, options?: AssertionOptions): Promise<void>;
131
+ /**
132
+ * Assert element count
133
+ */
134
+ assertCount(locator: Locator | string, expected: number, options?: AssertionOptions): Promise<void>;
135
+ /**
136
+ * Assert element count greater than
137
+ */
138
+ assertCountGreaterThan(locator: Locator | string, expected: number, options?: AssertionOptions): Promise<void>;
139
+ /**
140
+ * Assert element count less than
141
+ */
142
+ assertCountLessThan(locator: Locator | string, expected: number, options?: AssertionOptions): Promise<void>;
143
+ /**
144
+ * Assert condition is true
145
+ */
146
+ assertTrue(condition: boolean, message: string, options?: AssertionOptions): void;
147
+ /**
148
+ * Assert condition is false
149
+ */
150
+ assertFalse(condition: boolean, message: string, options?: AssertionOptions): void;
151
+ /**
152
+ * Assert values are equal
153
+ */
154
+ assertEqual<T>(actual: T, expected: T, message?: string, options?: AssertionOptions): void;
155
+ /**
156
+ * Assert values are not equal
157
+ */
158
+ assertNotEqual<T>(actual: T, notExpected: T, message?: string, options?: AssertionOptions): void;
159
+ /**
160
+ * Always fail with message
161
+ */
162
+ fail(message: string, options?: AssertionOptions): void;
163
+ }
164
+ //# sourceMappingURL=web.assertions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.assertions.d.ts","sourceRoot":"","sources":["../../src/web/web.assertions.ts"],"names":[],"mappings":"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"}