codeceptjs 3.5.8 → 3.5.9-beta.2
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.
- package/README.md +1 -1
- package/docs/build/Appium.js +24 -24
- package/docs/build/Nightmare.js +51 -52
- package/docs/build/Playwright.js +137 -76
- package/docs/build/Protractor.js +64 -65
- package/docs/build/Puppeteer.js +74 -75
- package/docs/build/TestCafe.js +54 -55
- package/docs/build/WebDriver.js +79 -80
- package/docs/changelog.md +1 -571
- package/docs/community-helpers.md +4 -8
- package/docs/examples.md +2 -8
- package/docs/helpers/Appium.md +19 -19
- package/docs/helpers/Nightmare.md +75 -77
- package/docs/helpers/Playwright.md +350 -314
- package/docs/helpers/Protractor.md +153 -155
- package/docs/helpers/Puppeteer.md +146 -148
- package/docs/helpers/TestCafe.md +124 -126
- package/docs/helpers/WebDriver.md +155 -157
- package/docs/internal-api.md +111 -0
- package/docs/plugins.md +4 -2
- package/docs/webapi/amOnPage.mustache +1 -1
- package/docs/webapi/appendField.mustache +1 -1
- package/docs/webapi/attachFile.mustache +1 -1
- package/docs/webapi/blur.mustache +1 -1
- package/docs/webapi/checkOption.mustache +1 -1
- package/docs/webapi/clearCookie.mustache +1 -2
- package/docs/webapi/clearField.mustache +1 -1
- package/docs/webapi/click.mustache +1 -1
- package/docs/webapi/clickLink.mustache +1 -1
- package/docs/webapi/closeCurrentTab.mustache +1 -1
- package/docs/webapi/closeOtherTabs.mustache +1 -1
- package/docs/webapi/dontSee.mustache +1 -1
- package/docs/webapi/dontSeeCheckboxIsChecked.mustache +1 -1
- package/docs/webapi/dontSeeCookie.mustache +1 -1
- package/docs/webapi/dontSeeCurrentUrlEquals.mustache +1 -1
- package/docs/webapi/dontSeeElement.mustache +1 -1
- package/docs/webapi/dontSeeElementInDOM.mustache +1 -1
- package/docs/webapi/dontSeeInCurrentUrl.mustache +1 -1
- package/docs/webapi/dontSeeInField.mustache +1 -1
- package/docs/webapi/dontSeeInSource.mustache +1 -1
- package/docs/webapi/dontSeeInTitle.mustache +1 -1
- package/docs/webapi/doubleClick.mustache +1 -1
- package/docs/webapi/downloadFile.mustache +1 -1
- package/docs/webapi/dragAndDrop.mustache +1 -1
- package/docs/webapi/dragSlider.mustache +1 -1
- package/docs/webapi/fillField.mustache +1 -1
- package/docs/webapi/focus.mustache +1 -1
- package/docs/webapi/forceClick.mustache +1 -1
- package/docs/webapi/forceRightClick.mustache +1 -1
- package/docs/webapi/grabDataFromPerformanceTiming.mustache +1 -1
- package/docs/webapi/moveCursorTo.mustache +1 -1
- package/docs/webapi/openNewTab.mustache +1 -1
- package/docs/webapi/pressKey.mustache +1 -1
- package/docs/webapi/pressKeyDown.mustache +1 -1
- package/docs/webapi/pressKeyUp.mustache +1 -1
- package/docs/webapi/pressKeyWithKeyNormalization.mustache +1 -1
- package/docs/webapi/refreshPage.mustache +1 -1
- package/docs/webapi/resizeWindow.mustache +1 -1
- package/docs/webapi/rightClick.mustache +1 -1
- package/docs/webapi/saveElementScreenshot.mustache +1 -1
- package/docs/webapi/saveScreenshot.mustache +1 -1
- package/docs/webapi/say.mustache +1 -1
- package/docs/webapi/scrollIntoView.mustache +1 -1
- package/docs/webapi/scrollPageToBottom.mustache +1 -1
- package/docs/webapi/scrollPageToTop.mustache +1 -1
- package/docs/webapi/scrollTo.mustache +1 -1
- package/docs/webapi/see.mustache +1 -1
- package/docs/webapi/seeAttributesOnElements.mustache +1 -1
- package/docs/webapi/seeCheckboxIsChecked.mustache +1 -1
- package/docs/webapi/seeCookie.mustache +1 -1
- package/docs/webapi/seeCssPropertiesOnElements.mustache +1 -1
- package/docs/webapi/seeCurrentUrlEquals.mustache +1 -1
- package/docs/webapi/seeElement.mustache +1 -1
- package/docs/webapi/seeElementInDOM.mustache +1 -1
- package/docs/webapi/seeInCurrentUrl.mustache +1 -1
- package/docs/webapi/seeInField.mustache +1 -1
- package/docs/webapi/seeInPopup.mustache +1 -1
- package/docs/webapi/seeInSource.mustache +1 -1
- package/docs/webapi/seeInTitle.mustache +1 -1
- package/docs/webapi/seeNumberOfElements.mustache +1 -1
- package/docs/webapi/seeNumberOfVisibleElements.mustache +1 -1
- package/docs/webapi/seeTextEquals.mustache +1 -1
- package/docs/webapi/seeTitleEquals.mustache +1 -1
- package/docs/webapi/selectOption.mustache +1 -1
- package/docs/webapi/setCookie.mustache +1 -1
- package/docs/webapi/setGeoLocation.mustache +1 -1
- package/docs/webapi/switchTo.mustache +1 -1
- package/docs/webapi/switchToNextTab.mustache +1 -1
- package/docs/webapi/switchToPreviousTab.mustache +1 -1
- package/docs/webapi/type.mustache +1 -1
- package/docs/webapi/uncheckOption.mustache +1 -1
- package/docs/webapi/wait.mustache +1 -1
- package/docs/webapi/waitForClickable.mustache +1 -1
- package/docs/webapi/waitForDetached.mustache +1 -1
- package/docs/webapi/waitForElement.mustache +1 -1
- package/docs/webapi/waitForEnabled.mustache +1 -1
- package/docs/webapi/waitForFunction.mustache +1 -1
- package/docs/webapi/waitForInvisible.mustache +1 -1
- package/docs/webapi/waitForText.mustache +1 -1
- package/docs/webapi/waitForValue.mustache +1 -1
- package/docs/webapi/waitForVisible.mustache +1 -1
- package/docs/webapi/waitInUrl.mustache +1 -1
- package/docs/webapi/waitNumberOfVisibleElements.mustache +1 -1
- package/docs/webapi/waitToHide.mustache +1 -1
- package/docs/webapi/waitUrlEquals.mustache +1 -1
- package/lib/command/run-multiple.js +1 -1
- package/lib/command/run-workers.js +30 -4
- package/lib/command/workers/runTests.js +23 -0
- package/lib/event.js +2 -0
- package/lib/helper/Appium.js +10 -10
- package/lib/helper/Playwright.js +78 -7
- package/lib/helper/Puppeteer.js +7 -3
- package/lib/helper/WebDriver.js +6 -2
- package/lib/interfaces/gherkin.js +8 -1
- package/lib/interfaces/scenarioConfig.js +1 -0
- package/lib/locator.js +2 -2
- package/lib/plugin/autoLogin.js +4 -2
- package/lib/plugin/retryFailedStep.js +5 -0
- package/lib/plugin/stepByStepReport.js +2 -2
- package/lib/ui.js +1 -0
- package/lib/workers.js +2 -0
- package/package.json +4 -4
- package/typings/promiseBasedTypes.d.ts +449 -1008
- package/typings/types.d.ts +452 -425
package/docs/helpers/TestCafe.md
CHANGED
|
@@ -107,7 +107,7 @@ I.amOnPage('/login'); // opens a login page
|
|
|
107
107
|
|
|
108
108
|
- `url` **[string][4]** url path or global url.
|
|
109
109
|
|
|
110
|
-
Returns **
|
|
110
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
111
111
|
|
|
112
112
|
### appendField
|
|
113
113
|
|
|
@@ -122,10 +122,10 @@ I.appendField('password', secret('123456'));
|
|
|
122
122
|
|
|
123
123
|
#### Parameters
|
|
124
124
|
|
|
125
|
-
- `field` **([string][4] | [object][
|
|
125
|
+
- `field` **([string][4] | [object][5])** located by label|name|CSS|XPath|strict locator
|
|
126
126
|
- `value` **[string][4]** text value to append.
|
|
127
127
|
|
|
128
|
-
Returns **
|
|
128
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
129
129
|
|
|
130
130
|
### attachFile
|
|
131
131
|
|
|
@@ -142,14 +142,14 @@ I.attachFile('form input[name=avatar]', 'data/avatar.jpg');
|
|
|
142
142
|
|
|
143
143
|
- `field`
|
|
144
144
|
- `pathToFile` **[string][4]** local file path relative to codecept.conf.ts or codecept.conf.js config file.
|
|
145
|
-
- `locator` **([string][4] | [object][
|
|
145
|
+
- `locator` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
146
146
|
|
|
147
|
-
Returns **
|
|
147
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
148
148
|
|
|
149
149
|
### blur
|
|
150
150
|
|
|
151
151
|
Remove focus from a text input, button, etc.
|
|
152
|
-
Calls [blur][
|
|
152
|
+
Calls [blur][6] on the element.
|
|
153
153
|
|
|
154
154
|
Examples:
|
|
155
155
|
|
|
@@ -166,10 +166,10 @@ I.dontSee('#add-to-cart-btn');
|
|
|
166
166
|
|
|
167
167
|
#### Parameters
|
|
168
168
|
|
|
169
|
-
- `locator` **([string][4] | [object][
|
|
170
|
-
- `options` **any?** Playwright only: [Additional options][
|
|
169
|
+
- `locator` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
170
|
+
- `options` **any?** Playwright only: [Additional options][7] for available options object as 2nd argument.
|
|
171
171
|
|
|
172
|
-
Returns **
|
|
172
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
173
173
|
|
|
174
174
|
### checkOption
|
|
175
175
|
|
|
@@ -186,10 +186,10 @@ I.checkOption('agree', '//form');
|
|
|
186
186
|
|
|
187
187
|
#### Parameters
|
|
188
188
|
|
|
189
|
-
- `field` **([string][4] | [object][
|
|
190
|
-
- `context` **([string][4]? | [object][
|
|
189
|
+
- `field` **([string][4] | [object][5])** checkbox located by label | name | CSS | XPath | strict locator.
|
|
190
|
+
- `context` **([string][4]? | [object][5])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
191
191
|
|
|
192
|
-
Returns **
|
|
192
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
193
193
|
|
|
194
194
|
### clearCookie
|
|
195
195
|
|
|
@@ -198,7 +198,7 @@ if none provided clears all cookies.
|
|
|
198
198
|
|
|
199
199
|
```js
|
|
200
200
|
I.clearCookie();
|
|
201
|
-
I.clearCookie('test');
|
|
201
|
+
I.clearCookie('test'); // Playwright currently doesn't support clear a particular cookie name
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
#### Parameters
|
|
@@ -206,8 +206,6 @@ I.clearCookie('test');
|
|
|
206
206
|
- `cookieName`
|
|
207
207
|
- `cookie` **[string][4]?** (optional, `null` by default) cookie name
|
|
208
208
|
|
|
209
|
-
Returns **[Promise][5]<void>** automatically synchronized promise through #recorder
|
|
210
|
-
|
|
211
209
|
### clearField
|
|
212
210
|
|
|
213
211
|
Clears a `<textarea>` or text `<input>` element's value.
|
|
@@ -221,9 +219,9 @@ I.clearField('#email');
|
|
|
221
219
|
#### Parameters
|
|
222
220
|
|
|
223
221
|
- `field`
|
|
224
|
-
- `editable` **([string][4] | [object][
|
|
222
|
+
- `editable` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
225
223
|
|
|
226
|
-
Returns **
|
|
224
|
+
Returns **void** automatically synchronized promise through #recorder.
|
|
227
225
|
|
|
228
226
|
### click
|
|
229
227
|
|
|
@@ -251,10 +249,10 @@ I.click({css: 'nav a.login'});
|
|
|
251
249
|
|
|
252
250
|
#### Parameters
|
|
253
251
|
|
|
254
|
-
- `locator` **([string][4] | [object][
|
|
255
|
-
- `context` **([string][4]? | [object][
|
|
252
|
+
- `locator` **([string][4] | [object][5])** clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
253
|
+
- `context` **([string][4]? | [object][5] | null)** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
256
254
|
|
|
257
|
-
Returns **
|
|
255
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
258
256
|
|
|
259
257
|
### dontSee
|
|
260
258
|
|
|
@@ -269,9 +267,9 @@ I.dontSee('Login', '.nav'); // no login inside .nav element
|
|
|
269
267
|
#### Parameters
|
|
270
268
|
|
|
271
269
|
- `text` **[string][4]** which is not present.
|
|
272
|
-
- `context` **([string][4] | [object][
|
|
270
|
+
- `context` **([string][4] | [object][5])?** (optional) element located by CSS|XPath|strict locator in which to perfrom search.
|
|
273
271
|
|
|
274
|
-
Returns **
|
|
272
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
275
273
|
|
|
276
274
|
### dontSeeCheckboxIsChecked
|
|
277
275
|
|
|
@@ -285,9 +283,9 @@ I.dontSeeCheckboxIsChecked('agree'); // located by name
|
|
|
285
283
|
|
|
286
284
|
#### Parameters
|
|
287
285
|
|
|
288
|
-
- `field` **([string][4] | [object][
|
|
286
|
+
- `field` **([string][4] | [object][5])** located by label|name|CSS|XPath|strict locator.
|
|
289
287
|
|
|
290
|
-
Returns **
|
|
288
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
291
289
|
|
|
292
290
|
### dontSeeCookie
|
|
293
291
|
|
|
@@ -301,7 +299,7 @@ I.dontSeeCookie('auth'); // no auth cookie
|
|
|
301
299
|
|
|
302
300
|
- `name` **[string][4]** cookie name.
|
|
303
301
|
|
|
304
|
-
Returns **
|
|
302
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
305
303
|
|
|
306
304
|
### dontSeeCurrentUrlEquals
|
|
307
305
|
|
|
@@ -317,7 +315,7 @@ I.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also
|
|
|
317
315
|
|
|
318
316
|
- `url` **[string][4]** value to check.
|
|
319
317
|
|
|
320
|
-
Returns **
|
|
318
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
321
319
|
|
|
322
320
|
### dontSeeElement
|
|
323
321
|
|
|
@@ -329,9 +327,9 @@ I.dontSeeElement('.modal'); // modal is not shown
|
|
|
329
327
|
|
|
330
328
|
#### Parameters
|
|
331
329
|
|
|
332
|
-
- `locator` **([string][4] | [object][
|
|
330
|
+
- `locator` **([string][4] | [object][5])** located by CSS|XPath|Strict locator.
|
|
333
331
|
|
|
334
|
-
Returns **
|
|
332
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
335
333
|
|
|
336
334
|
### dontSeeElementInDOM
|
|
337
335
|
|
|
@@ -343,9 +341,9 @@ I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or
|
|
|
343
341
|
|
|
344
342
|
#### Parameters
|
|
345
343
|
|
|
346
|
-
- `locator` **([string][4] | [object][
|
|
344
|
+
- `locator` **([string][4] | [object][5])** located by CSS|XPath|Strict locator.
|
|
347
345
|
|
|
348
|
-
Returns **
|
|
346
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
349
347
|
|
|
350
348
|
### dontSeeInCurrentUrl
|
|
351
349
|
|
|
@@ -355,7 +353,7 @@ Checks that current url does not contain a provided fragment.
|
|
|
355
353
|
|
|
356
354
|
- `url` **[string][4]** value to check.
|
|
357
355
|
|
|
358
|
-
Returns **
|
|
356
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
359
357
|
|
|
360
358
|
### dontSeeInField
|
|
361
359
|
|
|
@@ -369,10 +367,10 @@ I.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS
|
|
|
369
367
|
|
|
370
368
|
#### Parameters
|
|
371
369
|
|
|
372
|
-
- `field` **([string][4] | [object][
|
|
373
|
-
- `value` **([string][4] | [object][
|
|
370
|
+
- `field` **([string][4] | [object][5])** located by label|name|CSS|XPath|strict locator.
|
|
371
|
+
- `value` **([string][4] | [object][5])** value to check.
|
|
374
372
|
|
|
375
|
-
Returns **
|
|
373
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
376
374
|
|
|
377
375
|
### dontSeeInSource
|
|
378
376
|
|
|
@@ -387,7 +385,7 @@ I.dontSeeInSource('<!--'); // no comments in source
|
|
|
387
385
|
- `text`
|
|
388
386
|
- `value` **[string][4]** to check.
|
|
389
387
|
|
|
390
|
-
Returns **
|
|
388
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
391
389
|
|
|
392
390
|
### doubleClick
|
|
393
391
|
|
|
@@ -403,10 +401,10 @@ I.doubleClick('.btn.edit');
|
|
|
403
401
|
|
|
404
402
|
#### Parameters
|
|
405
403
|
|
|
406
|
-
- `locator` **([string][4] | [object][
|
|
407
|
-
- `context` **([string][4]? | [object][
|
|
404
|
+
- `locator` **([string][4] | [object][5])** clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
405
|
+
- `context` **([string][4]? | [object][5])** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
408
406
|
|
|
409
|
-
Returns **
|
|
407
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
410
408
|
|
|
411
409
|
### executeScript
|
|
412
410
|
|
|
@@ -436,10 +434,10 @@ let date = await I.executeScript(function(el) {
|
|
|
436
434
|
|
|
437
435
|
#### Parameters
|
|
438
436
|
|
|
439
|
-
- `fn` **([string][4] | [function][
|
|
437
|
+
- `fn` **([string][4] | [function][8])** function to be executed in browser context.
|
|
440
438
|
- `args` **...any** to be passed to function.
|
|
441
439
|
|
|
442
|
-
Returns **[Promise][
|
|
440
|
+
Returns **[Promise][9]<any>** script return valueIf a function returns a Promise It will wait for its resolution.
|
|
443
441
|
|
|
444
442
|
### fillField
|
|
445
443
|
|
|
@@ -459,14 +457,14 @@ I.fillField({css: 'form#login input[name=username]'}, 'John');
|
|
|
459
457
|
|
|
460
458
|
#### Parameters
|
|
461
459
|
|
|
462
|
-
- `field` **([string][4] | [object][
|
|
463
|
-
- `value` **([string][4] | [object][
|
|
460
|
+
- `field` **([string][4] | [object][5])** located by label|name|CSS|XPath|strict locator.
|
|
461
|
+
- `value` **([string][4] | [object][5])** text value to fill.
|
|
464
462
|
|
|
465
|
-
Returns **
|
|
463
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
466
464
|
|
|
467
465
|
### focus
|
|
468
466
|
|
|
469
|
-
Calls [focus][
|
|
467
|
+
Calls [focus][6] on the matching element.
|
|
470
468
|
|
|
471
469
|
Examples:
|
|
472
470
|
|
|
@@ -478,10 +476,10 @@ I.see('#add-to-cart-bnt');
|
|
|
478
476
|
|
|
479
477
|
#### Parameters
|
|
480
478
|
|
|
481
|
-
- `locator` **([string][4] | [object][
|
|
479
|
+
- `locator` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
482
480
|
- `options` **any?** Playwright only: [Additional options][10] for available options object as 2nd argument.
|
|
483
481
|
|
|
484
|
-
Returns **
|
|
482
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
485
483
|
|
|
486
484
|
### grabAttributeFrom
|
|
487
485
|
|
|
@@ -495,10 +493,10 @@ let hint = await I.grabAttributeFrom('#tooltip', 'title');
|
|
|
495
493
|
|
|
496
494
|
#### Parameters
|
|
497
495
|
|
|
498
|
-
- `locator` **([string][4] | [object][
|
|
496
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
499
497
|
- `attr` **[string][4]** attribute name.
|
|
500
498
|
|
|
501
|
-
Returns **[Promise][
|
|
499
|
+
Returns **[Promise][9]<[string][4]>** attribute value
|
|
502
500
|
|
|
503
501
|
### grabAttributeFromAll
|
|
504
502
|
|
|
@@ -512,10 +510,10 @@ let hint = await I.grabAttributeFrom('#tooltip', 'title');
|
|
|
512
510
|
|
|
513
511
|
#### Parameters
|
|
514
512
|
|
|
515
|
-
- `locator` **([string][4] | [object][
|
|
513
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
516
514
|
- `attr` **[string][4]** attribute name.
|
|
517
515
|
|
|
518
|
-
Returns **[Promise][
|
|
516
|
+
Returns **[Promise][9]<[string][4]>** attribute value
|
|
519
517
|
|
|
520
518
|
### grabBrowserLogs
|
|
521
519
|
|
|
@@ -553,7 +551,7 @@ let url = await I.grabCurrentUrl();
|
|
|
553
551
|
console.log(`Current URL is [${url}]`);
|
|
554
552
|
```
|
|
555
553
|
|
|
556
|
-
Returns **[Promise][
|
|
554
|
+
Returns **[Promise][9]<[string][4]>** current URL
|
|
557
555
|
|
|
558
556
|
### grabNumberOfVisibleElements
|
|
559
557
|
|
|
@@ -566,9 +564,9 @@ let numOfElements = await I.grabNumberOfVisibleElements('p');
|
|
|
566
564
|
|
|
567
565
|
#### Parameters
|
|
568
566
|
|
|
569
|
-
- `locator` **([string][4] | [object][
|
|
567
|
+
- `locator` **([string][4] | [object][5])** located by CSS|XPath|strict locator.
|
|
570
568
|
|
|
571
|
-
Returns **[Promise][
|
|
569
|
+
Returns **[Promise][9]<[number][11]>** number of visible elements
|
|
572
570
|
|
|
573
571
|
### grabPageScrollPosition
|
|
574
572
|
|
|
@@ -579,7 +577,7 @@ Resumes test execution, so **should be used inside an async function with `await
|
|
|
579
577
|
let { x, y } = await I.grabPageScrollPosition();
|
|
580
578
|
```
|
|
581
579
|
|
|
582
|
-
Returns **[Promise][
|
|
580
|
+
Returns **[Promise][9]<PageScrollPosition>** scroll position
|
|
583
581
|
|
|
584
582
|
### grabSource
|
|
585
583
|
|
|
@@ -590,7 +588,7 @@ Resumes test execution, so **should be used inside async function with `await`**
|
|
|
590
588
|
let pageSource = await I.grabSource();
|
|
591
589
|
```
|
|
592
590
|
|
|
593
|
-
Returns **[Promise][
|
|
591
|
+
Returns **[Promise][9]<[string][4]>** source code
|
|
594
592
|
|
|
595
593
|
### grabTextFrom
|
|
596
594
|
|
|
@@ -605,9 +603,9 @@ If multiple elements found returns first element.
|
|
|
605
603
|
|
|
606
604
|
#### Parameters
|
|
607
605
|
|
|
608
|
-
- `locator` **([string][4] | [object][
|
|
606
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
609
607
|
|
|
610
|
-
Returns **[Promise][
|
|
608
|
+
Returns **[Promise][9]<[string][4]>** attribute value
|
|
611
609
|
|
|
612
610
|
### grabTextFromAll
|
|
613
611
|
|
|
@@ -620,9 +618,9 @@ let pins = await I.grabTextFromAll('#pin li');
|
|
|
620
618
|
|
|
621
619
|
#### Parameters
|
|
622
620
|
|
|
623
|
-
- `locator` **([string][4] | [object][
|
|
621
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
624
622
|
|
|
625
|
-
Returns **[Promise][
|
|
623
|
+
Returns **[Promise][9]<[Array][12]<[string][4]>>** attribute value
|
|
626
624
|
|
|
627
625
|
### grabValueFrom
|
|
628
626
|
|
|
@@ -636,9 +634,9 @@ let email = await I.grabValueFrom('input[name=email]');
|
|
|
636
634
|
|
|
637
635
|
#### Parameters
|
|
638
636
|
|
|
639
|
-
- `locator` **([string][4] | [object][
|
|
637
|
+
- `locator` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
640
638
|
|
|
641
|
-
Returns **[Promise][
|
|
639
|
+
Returns **[Promise][9]<[string][4]>** attribute value
|
|
642
640
|
|
|
643
641
|
### grabValueFromAll
|
|
644
642
|
|
|
@@ -651,9 +649,9 @@ let inputs = await I.grabValueFromAll('//form/input');
|
|
|
651
649
|
|
|
652
650
|
#### Parameters
|
|
653
651
|
|
|
654
|
-
- `locator` **([string][4] | [object][
|
|
652
|
+
- `locator` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
655
653
|
|
|
656
|
-
Returns **[Promise][
|
|
654
|
+
Returns **[Promise][9]<[Array][12]<[string][4]>>** attribute value
|
|
657
655
|
|
|
658
656
|
### moveCursorTo
|
|
659
657
|
|
|
@@ -667,11 +665,11 @@ I.moveCursorTo('#submit', 5,5);
|
|
|
667
665
|
|
|
668
666
|
#### Parameters
|
|
669
667
|
|
|
670
|
-
- `locator` **([string][4] | [object][
|
|
668
|
+
- `locator` **([string][4] | [object][5])** located by CSS|XPath|strict locator.
|
|
671
669
|
- `offsetX` **[number][11]** (optional, `0` by default) X-axis offset.
|
|
672
670
|
- `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
|
|
673
671
|
|
|
674
|
-
Returns **
|
|
672
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
675
673
|
|
|
676
674
|
### pressKey
|
|
677
675
|
|
|
@@ -689,7 +687,7 @@ I.pressKey(['Control','a']);
|
|
|
689
687
|
|
|
690
688
|
- `key` **([string][4] | [Array][12]<[string][4]>)** key or array of keys to press.
|
|
691
689
|
|
|
692
|
-
Returns **
|
|
690
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
693
691
|
|
|
694
692
|
|
|
695
693
|
[Valid key names](https://w3c.github.io/webdriver/#keyboard-actions) are:
|
|
@@ -732,7 +730,7 @@ Reload the current page.
|
|
|
732
730
|
I.refreshPage();
|
|
733
731
|
```
|
|
734
732
|
|
|
735
|
-
Returns **
|
|
733
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
736
734
|
|
|
737
735
|
### resizeWindow
|
|
738
736
|
|
|
@@ -744,7 +742,7 @@ First parameter can be set to `maximize`.
|
|
|
744
742
|
- `width` **[number][11]** width in pixels or `maximize`.
|
|
745
743
|
- `height` **[number][11]** height in pixels.
|
|
746
744
|
|
|
747
|
-
Returns **
|
|
745
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
748
746
|
|
|
749
747
|
### rightClick
|
|
750
748
|
|
|
@@ -761,10 +759,10 @@ I.rightClick('Click me', '.context');
|
|
|
761
759
|
|
|
762
760
|
#### Parameters
|
|
763
761
|
|
|
764
|
-
- `locator` **([string][4] | [object][
|
|
765
|
-
- `context` **([string][4]? | [object][
|
|
762
|
+
- `locator` **([string][4] | [object][5])** clickable element located by CSS|XPath|strict locator.
|
|
763
|
+
- `context` **([string][4]? | [object][5])** (optional, `null` by default) element located by CSS|XPath|strict locator.
|
|
766
764
|
|
|
767
|
-
Returns **
|
|
765
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
768
766
|
|
|
769
767
|
### saveElementScreenshot
|
|
770
768
|
|
|
@@ -777,10 +775,10 @@ I.saveElementScreenshot(`#submit`,'debug.png');
|
|
|
777
775
|
|
|
778
776
|
#### Parameters
|
|
779
777
|
|
|
780
|
-
- `locator` **([string][4] | [object][
|
|
778
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
781
779
|
- `fileName` **[string][4]** file name to save.
|
|
782
780
|
|
|
783
|
-
Returns **
|
|
781
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
784
782
|
|
|
785
783
|
### saveScreenshot
|
|
786
784
|
|
|
@@ -798,7 +796,7 @@ I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scro
|
|
|
798
796
|
- `fileName` **[string][4]** file name to save.
|
|
799
797
|
- `fullPage` **[boolean][14]** (optional, `false` by default) flag to enable fullscreen screenshot mode.
|
|
800
798
|
|
|
801
|
-
Returns **
|
|
799
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
802
800
|
|
|
803
801
|
### scrollPageToBottom
|
|
804
802
|
|
|
@@ -808,7 +806,7 @@ Scroll page to the bottom.
|
|
|
808
806
|
I.scrollPageToBottom();
|
|
809
807
|
```
|
|
810
808
|
|
|
811
|
-
Returns **
|
|
809
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
812
810
|
|
|
813
811
|
### scrollPageToTop
|
|
814
812
|
|
|
@@ -818,7 +816,7 @@ Scroll page to the top.
|
|
|
818
816
|
I.scrollPageToTop();
|
|
819
817
|
```
|
|
820
818
|
|
|
821
|
-
Returns **
|
|
819
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
822
820
|
|
|
823
821
|
### scrollTo
|
|
824
822
|
|
|
@@ -832,11 +830,11 @@ I.scrollTo('#submit', 5, 5);
|
|
|
832
830
|
|
|
833
831
|
#### Parameters
|
|
834
832
|
|
|
835
|
-
- `locator` **([string][4] | [object][
|
|
833
|
+
- `locator` **([string][4] | [object][5])** located by CSS|XPath|strict locator.
|
|
836
834
|
- `offsetX` **[number][11]** (optional, `0` by default) X-axis offset.
|
|
837
835
|
- `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
|
|
838
836
|
|
|
839
|
-
Returns **
|
|
837
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
840
838
|
|
|
841
839
|
### see
|
|
842
840
|
|
|
@@ -852,9 +850,9 @@ I.see('Register', {css: 'form.register'}); // use strict locator
|
|
|
852
850
|
#### Parameters
|
|
853
851
|
|
|
854
852
|
- `text` **[string][4]** expected on page.
|
|
855
|
-
- `context` **([string][4]? | [object][
|
|
853
|
+
- `context` **([string][4]? | [object][5])** (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
|
|
856
854
|
|
|
857
|
-
Returns **
|
|
855
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
858
856
|
|
|
859
857
|
### seeCheckboxIsChecked
|
|
860
858
|
|
|
@@ -868,9 +866,9 @@ I.seeCheckboxIsChecked({css: '#signup_form input[type=checkbox]'});
|
|
|
868
866
|
|
|
869
867
|
#### Parameters
|
|
870
868
|
|
|
871
|
-
- `field` **([string][4] | [object][
|
|
869
|
+
- `field` **([string][4] | [object][5])** located by label|name|CSS|XPath|strict locator.
|
|
872
870
|
|
|
873
|
-
Returns **
|
|
871
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
874
872
|
|
|
875
873
|
### seeCookie
|
|
876
874
|
|
|
@@ -884,7 +882,7 @@ I.seeCookie('Auth');
|
|
|
884
882
|
|
|
885
883
|
- `name` **[string][4]** cookie name.
|
|
886
884
|
|
|
887
|
-
Returns **
|
|
885
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
888
886
|
|
|
889
887
|
### seeCurrentUrlEquals
|
|
890
888
|
|
|
@@ -901,7 +899,7 @@ I.seeCurrentUrlEquals('http://my.site.com/register');
|
|
|
901
899
|
|
|
902
900
|
- `url` **[string][4]** value to check.
|
|
903
901
|
|
|
904
|
-
Returns **
|
|
902
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
905
903
|
|
|
906
904
|
### seeElement
|
|
907
905
|
|
|
@@ -914,9 +912,9 @@ I.seeElement('#modal');
|
|
|
914
912
|
|
|
915
913
|
#### Parameters
|
|
916
914
|
|
|
917
|
-
- `locator` **([string][4] | [object][
|
|
915
|
+
- `locator` **([string][4] | [object][5])** located by CSS|XPath|strict locator.
|
|
918
916
|
|
|
919
|
-
Returns **
|
|
917
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
920
918
|
|
|
921
919
|
### seeElementInDOM
|
|
922
920
|
|
|
@@ -929,9 +927,9 @@ I.seeElementInDOM('#modal');
|
|
|
929
927
|
|
|
930
928
|
#### Parameters
|
|
931
929
|
|
|
932
|
-
- `locator` **([string][4] | [object][
|
|
930
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
933
931
|
|
|
934
|
-
Returns **
|
|
932
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
935
933
|
|
|
936
934
|
### seeInCurrentUrl
|
|
937
935
|
|
|
@@ -945,7 +943,7 @@ I.seeInCurrentUrl('/register'); // we are on registration page
|
|
|
945
943
|
|
|
946
944
|
- `url` **[string][4]** a fragment to check
|
|
947
945
|
|
|
948
|
-
Returns **
|
|
946
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
949
947
|
|
|
950
948
|
### seeInField
|
|
951
949
|
|
|
@@ -961,10 +959,10 @@ I.seeInField('#searchform input','Search');
|
|
|
961
959
|
|
|
962
960
|
#### Parameters
|
|
963
961
|
|
|
964
|
-
- `field` **([string][4] | [object][
|
|
965
|
-
- `value` **([string][4] | [object][
|
|
962
|
+
- `field` **([string][4] | [object][5])** located by label|name|CSS|XPath|strict locator.
|
|
963
|
+
- `value` **([string][4] | [object][5])** value to check.
|
|
966
964
|
|
|
967
|
-
Returns **
|
|
965
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
968
966
|
|
|
969
967
|
### seeInSource
|
|
970
968
|
|
|
@@ -978,7 +976,7 @@ I.seeInSource('<h1>Green eggs & ham</h1>');
|
|
|
978
976
|
|
|
979
977
|
- `text` **[string][4]** value to check.
|
|
980
978
|
|
|
981
|
-
Returns **
|
|
979
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
982
980
|
|
|
983
981
|
### seeNumberOfVisibleElements
|
|
984
982
|
|
|
@@ -991,10 +989,10 @@ I.seeNumberOfVisibleElements('.buttons', 3);
|
|
|
991
989
|
|
|
992
990
|
#### Parameters
|
|
993
991
|
|
|
994
|
-
- `locator` **([string][4] | [object][
|
|
992
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
995
993
|
- `num` **[number][11]** number of elements.
|
|
996
994
|
|
|
997
|
-
Returns **
|
|
995
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
998
996
|
|
|
999
997
|
### seeTextEquals
|
|
1000
998
|
|
|
@@ -1032,10 +1030,10 @@ I.selectOption('Which OS do you use?', ['Android', 'iOS']);
|
|
|
1032
1030
|
|
|
1033
1031
|
#### Parameters
|
|
1034
1032
|
|
|
1035
|
-
- `select` **([string][4] | [object][
|
|
1033
|
+
- `select` **([string][4] | [object][5])** field located by label|name|CSS|XPath|strict locator.
|
|
1036
1034
|
- `option` **([string][4] | [Array][12]<any>)** visible text or value of option.
|
|
1037
1035
|
|
|
1038
|
-
Returns **
|
|
1036
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1039
1037
|
|
|
1040
1038
|
### setCookie
|
|
1041
1039
|
|
|
@@ -1057,7 +1055,7 @@ I.setCookie([
|
|
|
1057
1055
|
|
|
1058
1056
|
- `cookie` **(Cookie | [Array][12]<Cookie>)** a cookie object or array of cookie objects.
|
|
1059
1057
|
|
|
1060
|
-
Returns **
|
|
1058
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1061
1059
|
|
|
1062
1060
|
### switchTo
|
|
1063
1061
|
|
|
@@ -1070,9 +1068,9 @@ I.switchTo(); // switch back to main page
|
|
|
1070
1068
|
|
|
1071
1069
|
#### Parameters
|
|
1072
1070
|
|
|
1073
|
-
- `locator` **([string][4]? | [object][
|
|
1071
|
+
- `locator` **([string][4]? | [object][5])** (optional, `null` by default) element located by CSS|XPath|strict locator.
|
|
1074
1072
|
|
|
1075
|
-
Returns **
|
|
1073
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1076
1074
|
|
|
1077
1075
|
### uncheckOption
|
|
1078
1076
|
|
|
@@ -1089,10 +1087,10 @@ I.uncheckOption('agree', '//form');
|
|
|
1089
1087
|
|
|
1090
1088
|
#### Parameters
|
|
1091
1089
|
|
|
1092
|
-
- `field` **([string][4] | [object][
|
|
1093
|
-
- `context` **([string][4]? | [object][
|
|
1090
|
+
- `field` **([string][4] | [object][5])** checkbox located by label | name | CSS | XPath | strict locator.
|
|
1091
|
+
- `context` **([string][4]? | [object][5])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
1094
1092
|
|
|
1095
|
-
Returns **
|
|
1093
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1096
1094
|
|
|
1097
1095
|
### useTestCafeTo
|
|
1098
1096
|
|
|
@@ -1112,7 +1110,7 @@ I.useTestCafeTo('handle browser dialog', async ({ t }) {
|
|
|
1112
1110
|
#### Parameters
|
|
1113
1111
|
|
|
1114
1112
|
- `description` **[string][4]** used to show in logs.
|
|
1115
|
-
- `fn` **[function][
|
|
1113
|
+
- `fn` **[function][8]** async functuion that executed with TestCafe helper as argument
|
|
1116
1114
|
|
|
1117
1115
|
### wait
|
|
1118
1116
|
|
|
@@ -1126,7 +1124,7 @@ I.wait(2); // wait 2 secs
|
|
|
1126
1124
|
|
|
1127
1125
|
- `sec` **[number][11]** number of second to wait.
|
|
1128
1126
|
|
|
1129
|
-
Returns **
|
|
1127
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1130
1128
|
|
|
1131
1129
|
### waitForElement
|
|
1132
1130
|
|
|
@@ -1140,10 +1138,10 @@ I.waitForElement('.btn.continue', 5); // wait for 5 secs
|
|
|
1140
1138
|
|
|
1141
1139
|
#### Parameters
|
|
1142
1140
|
|
|
1143
|
-
- `locator` **([string][4] | [object][
|
|
1141
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
1144
1142
|
- `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
|
|
1145
1143
|
|
|
1146
|
-
Returns **
|
|
1144
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1147
1145
|
|
|
1148
1146
|
### waitForFunction
|
|
1149
1147
|
|
|
@@ -1162,11 +1160,11 @@ I.waitForFunction((count) => window.requests == count, [3], 5) // pass args and
|
|
|
1162
1160
|
|
|
1163
1161
|
#### Parameters
|
|
1164
1162
|
|
|
1165
|
-
- `fn` **([string][4] | [function][
|
|
1163
|
+
- `fn` **([string][4] | [function][8])** to be executed in browser context.
|
|
1166
1164
|
- `argsOrSec` **([Array][12]<any> | [number][11])?** (optional, `1` by default) arguments for function or seconds.
|
|
1167
1165
|
- `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
|
|
1168
1166
|
|
|
1169
|
-
Returns **
|
|
1167
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1170
1168
|
|
|
1171
1169
|
### waitForInvisible
|
|
1172
1170
|
|
|
@@ -1179,10 +1177,10 @@ I.waitForInvisible('#popup');
|
|
|
1179
1177
|
|
|
1180
1178
|
#### Parameters
|
|
1181
1179
|
|
|
1182
|
-
- `locator` **([string][4] | [object][
|
|
1180
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
1183
1181
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1184
1182
|
|
|
1185
|
-
Returns **
|
|
1183
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1186
1184
|
|
|
1187
1185
|
### waitForText
|
|
1188
1186
|
|
|
@@ -1199,9 +1197,9 @@ I.waitForText('Thank you, form has been submitted', 5, '#modal');
|
|
|
1199
1197
|
|
|
1200
1198
|
- `text` **[string][4]** to wait for.
|
|
1201
1199
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1202
|
-
- `context` **([string][4] | [object][
|
|
1200
|
+
- `context` **([string][4] | [object][5])?** (optional) element located by CSS|XPath|strict locator.
|
|
1203
1201
|
|
|
1204
|
-
Returns **
|
|
1202
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1205
1203
|
|
|
1206
1204
|
### waitForVisible
|
|
1207
1205
|
|
|
@@ -1214,10 +1212,10 @@ I.waitForVisible('#popup');
|
|
|
1214
1212
|
|
|
1215
1213
|
#### Parameters
|
|
1216
1214
|
|
|
1217
|
-
- `locator` **([string][4] | [object][
|
|
1215
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
1218
1216
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1219
1217
|
|
|
1220
|
-
Returns **
|
|
1218
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1221
1219
|
|
|
1222
1220
|
### waitInUrl
|
|
1223
1221
|
|
|
@@ -1232,7 +1230,7 @@ I.waitInUrl('/info', 2);
|
|
|
1232
1230
|
- `urlPart` **[string][4]** value to check.
|
|
1233
1231
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1234
1232
|
|
|
1235
|
-
Returns **
|
|
1233
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1236
1234
|
|
|
1237
1235
|
### waitNumberOfVisibleElements
|
|
1238
1236
|
|
|
@@ -1244,11 +1242,11 @@ I.waitNumberOfVisibleElements('a', 3);
|
|
|
1244
1242
|
|
|
1245
1243
|
#### Parameters
|
|
1246
1244
|
|
|
1247
|
-
- `locator` **([string][4] | [object][
|
|
1245
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
1248
1246
|
- `num` **[number][11]** number of elements.
|
|
1249
1247
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1250
1248
|
|
|
1251
|
-
Returns **
|
|
1249
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1252
1250
|
|
|
1253
1251
|
### waitToHide
|
|
1254
1252
|
|
|
@@ -1261,10 +1259,10 @@ I.waitToHide('#popup');
|
|
|
1261
1259
|
|
|
1262
1260
|
#### Parameters
|
|
1263
1261
|
|
|
1264
|
-
- `locator` **([string][4] | [object][
|
|
1262
|
+
- `locator` **([string][4] | [object][5])** element located by CSS|XPath|strict locator.
|
|
1265
1263
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1266
1264
|
|
|
1267
|
-
Returns **
|
|
1265
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1268
1266
|
|
|
1269
1267
|
### waitUrlEquals
|
|
1270
1268
|
|
|
@@ -1280,7 +1278,7 @@ I.waitUrlEquals('http://127.0.0.1:8000/info');
|
|
|
1280
1278
|
- `urlPart` **[string][4]** value to check.
|
|
1281
1279
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1282
1280
|
|
|
1283
|
-
Returns **
|
|
1281
|
+
Returns **void** automatically synchronized promise through #recorder
|
|
1284
1282
|
|
|
1285
1283
|
## getPageUrl
|
|
1286
1284
|
|
|
@@ -1298,15 +1296,15 @@ Client Functions
|
|
|
1298
1296
|
|
|
1299
1297
|
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
|
|
1300
1298
|
|
|
1301
|
-
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/
|
|
1299
|
+
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
|
|
1302
1300
|
|
|
1303
|
-
[6]: https://developer.mozilla.org/docs/Web/
|
|
1301
|
+
[6]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus
|
|
1304
1302
|
|
|
1305
|
-
[7]: https://
|
|
1303
|
+
[7]: https://playwright.dev/docs/api/class-locator#locator-blur
|
|
1306
1304
|
|
|
1307
|
-
[8]: https://
|
|
1305
|
+
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
|
|
1308
1306
|
|
|
1309
|
-
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/
|
|
1307
|
+
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
|
|
1310
1308
|
|
|
1311
1309
|
[10]: https://playwright.dev/docs/api/class-locator#locator-focus
|
|
1312
1310
|
|