codeceptjs 3.3.1 → 3.3.4

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 (126) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +4 -25
  3. package/docs/api.md +4 -0
  4. package/docs/basics.md +2 -0
  5. package/docs/build/Appium.js +18 -28
  6. package/docs/build/JSONResponse.js +44 -3
  7. package/docs/build/Nightmare.js +53 -53
  8. package/docs/build/Playwright.js +95 -103
  9. package/docs/build/Protractor.js +66 -66
  10. package/docs/build/Puppeteer.js +74 -74
  11. package/docs/build/REST.js +8 -4
  12. package/docs/build/TestCafe.js +53 -53
  13. package/docs/build/WebDriver.js +84 -86
  14. package/docs/changelog.md +49 -0
  15. package/docs/helpers/Appium.md +212 -268
  16. package/docs/helpers/JSONResponse.md +24 -0
  17. package/docs/helpers/Nightmare.md +92 -141
  18. package/docs/helpers/Playwright.md +302 -413
  19. package/docs/helpers/Puppeteer.md +171 -231
  20. package/docs/helpers/REST.md +2 -0
  21. package/docs/helpers/TestCafe.md +125 -174
  22. package/docs/helpers/WebDriver.md +184 -247
  23. package/docs/plugins.md +41 -1
  24. package/docs/secrets.md +30 -0
  25. package/docs/webapi/amOnPage.mustache +1 -1
  26. package/docs/webapi/appendField.mustache +1 -1
  27. package/docs/webapi/attachFile.mustache +1 -1
  28. package/docs/webapi/checkOption.mustache +1 -1
  29. package/docs/webapi/clearCookie.mustache +1 -1
  30. package/docs/webapi/clearField.mustache +1 -1
  31. package/docs/webapi/click.mustache +1 -1
  32. package/docs/webapi/clickLink.mustache +1 -1
  33. package/docs/webapi/closeCurrentTab.mustache +1 -1
  34. package/docs/webapi/closeOtherTabs.mustache +1 -1
  35. package/docs/webapi/dontSee.mustache +1 -1
  36. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +1 -1
  37. package/docs/webapi/dontSeeCookie.mustache +1 -1
  38. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +1 -1
  39. package/docs/webapi/dontSeeElement.mustache +1 -1
  40. package/docs/webapi/dontSeeElementInDOM.mustache +1 -1
  41. package/docs/webapi/dontSeeInCurrentUrl.mustache +1 -1
  42. package/docs/webapi/dontSeeInField.mustache +1 -1
  43. package/docs/webapi/dontSeeInSource.mustache +1 -1
  44. package/docs/webapi/dontSeeInTitle.mustache +1 -1
  45. package/docs/webapi/doubleClick.mustache +1 -1
  46. package/docs/webapi/downloadFile.mustache +1 -1
  47. package/docs/webapi/dragAndDrop.mustache +1 -1
  48. package/docs/webapi/dragSlider.mustache +1 -1
  49. package/docs/webapi/executeAsyncScript.mustache +1 -1
  50. package/docs/webapi/executeScript.mustache +1 -1
  51. package/docs/webapi/fillField.mustache +1 -1
  52. package/docs/webapi/forceClick.mustache +1 -1
  53. package/docs/webapi/forceRightClick.mustache +1 -1
  54. package/docs/webapi/grabDataFromPerformanceTiming.mustache +1 -1
  55. package/docs/webapi/moveCursorTo.mustache +1 -1
  56. package/docs/webapi/openNewTab.mustache +1 -1
  57. package/docs/webapi/pressKey.mustache +1 -1
  58. package/docs/webapi/pressKeyDown.mustache +1 -1
  59. package/docs/webapi/pressKeyUp.mustache +1 -1
  60. package/docs/webapi/pressKeyWithKeyNormalization.mustache +1 -1
  61. package/docs/webapi/refreshPage.mustache +1 -1
  62. package/docs/webapi/resizeWindow.mustache +1 -1
  63. package/docs/webapi/rightClick.mustache +1 -1
  64. package/docs/webapi/saveElementScreenshot.mustache +1 -1
  65. package/docs/webapi/saveScreenshot.mustache +1 -1
  66. package/docs/webapi/say.mustache +1 -1
  67. package/docs/webapi/scrollIntoView.mustache +1 -1
  68. package/docs/webapi/scrollPageToBottom.mustache +1 -1
  69. package/docs/webapi/scrollPageToTop.mustache +1 -1
  70. package/docs/webapi/scrollTo.mustache +1 -1
  71. package/docs/webapi/see.mustache +1 -1
  72. package/docs/webapi/seeAttributesOnElements.mustache +1 -1
  73. package/docs/webapi/seeCheckboxIsChecked.mustache +1 -1
  74. package/docs/webapi/seeCookie.mustache +1 -1
  75. package/docs/webapi/seeCssPropertiesOnElements.mustache +1 -1
  76. package/docs/webapi/seeCurrentUrlEquals.mustache +1 -1
  77. package/docs/webapi/seeElement.mustache +1 -1
  78. package/docs/webapi/seeElementInDOM.mustache +1 -1
  79. package/docs/webapi/seeInCurrentUrl.mustache +1 -1
  80. package/docs/webapi/seeInField.mustache +1 -1
  81. package/docs/webapi/seeInPopup.mustache +1 -1
  82. package/docs/webapi/seeInSource.mustache +1 -1
  83. package/docs/webapi/seeInTitle.mustache +1 -1
  84. package/docs/webapi/seeNumberOfElements.mustache +1 -1
  85. package/docs/webapi/seeNumberOfVisibleElements.mustache +1 -1
  86. package/docs/webapi/seeTextEquals.mustache +1 -1
  87. package/docs/webapi/seeTitleEquals.mustache +1 -1
  88. package/docs/webapi/selectOption.mustache +1 -1
  89. package/docs/webapi/setCookie.mustache +1 -1
  90. package/docs/webapi/setGeoLocation.mustache +1 -1
  91. package/docs/webapi/switchTo.mustache +1 -1
  92. package/docs/webapi/switchToNextTab.mustache +1 -1
  93. package/docs/webapi/switchToPreviousTab.mustache +1 -1
  94. package/docs/webapi/type.mustache +1 -1
  95. package/docs/webapi/uncheckOption.mustache +1 -1
  96. package/docs/webapi/wait.mustache +1 -1
  97. package/docs/webapi/waitForClickable.mustache +1 -1
  98. package/docs/webapi/waitForDetached.mustache +1 -1
  99. package/docs/webapi/waitForElement.mustache +1 -1
  100. package/docs/webapi/waitForEnabled.mustache +1 -1
  101. package/docs/webapi/waitForFunction.mustache +1 -1
  102. package/docs/webapi/waitForInvisible.mustache +1 -1
  103. package/docs/webapi/waitForText.mustache +1 -1
  104. package/docs/webapi/waitForValue.mustache +1 -1
  105. package/docs/webapi/waitForVisible.mustache +1 -1
  106. package/docs/webapi/waitInUrl.mustache +1 -1
  107. package/docs/webapi/waitNumberOfVisibleElements.mustache +1 -1
  108. package/docs/webapi/waitToHide.mustache +1 -1
  109. package/docs/webapi/waitUrlEquals.mustache +1 -1
  110. package/lib/cli.js +1 -1
  111. package/lib/command/interactive.js +1 -1
  112. package/lib/command/run-workers.js +1 -1
  113. package/lib/command/workers/runTests.js +15 -0
  114. package/lib/helper/Appium.js +0 -10
  115. package/lib/helper/JSONResponse.js +44 -3
  116. package/lib/helper/Playwright.js +24 -32
  117. package/lib/helper/REST.js +8 -4
  118. package/lib/helper/WebDriver.js +5 -7
  119. package/lib/output.js +4 -0
  120. package/lib/plugin/customLocator.js +50 -3
  121. package/lib/plugin/retryFailedStep.js +1 -1
  122. package/lib/plugin/retryTo.js +1 -8
  123. package/lib/secret.js +30 -0
  124. package/lib/step.js +1 -1
  125. package/package.json +4 -4
  126. package/typings/types.d.ts +1016 -520
@@ -82,7 +82,7 @@ I.amOnPage('/login'); // opens a login page
82
82
  - `url` **[string][3]** url path or global url.
83
83
  - `headers` **[object][4]?** list of request headers can be passed
84
84
 
85
- Returns **[Promise][5]<any>**
85
+ Returns **void** automatically synchronized promise with recorder #!
86
86
 
87
87
  ### appendField
88
88
 
@@ -97,8 +97,7 @@ I.appendField('#myTextField', 'appended');
97
97
 
98
98
  - `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator
99
99
  - `value` **[string][3]** text value to append.
100
-
101
- Returns **[Promise][5]<any>**
100
+ [!] returns a _promise_ which is synchronized internally by recorder
102
101
 
103
102
  ### attachFile
104
103
 
@@ -115,8 +114,7 @@ I.attachFile('form input[name=avatar]', 'data/avatar.jpg');
115
114
 
116
115
  - `locator` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
117
116
  - `pathToFile` **[string][3]** local file path relative to codecept.json config file.
118
-
119
- Returns **[Promise][5]<any>** Doesn't work if the Chromium DevTools panel is open (as Chromium allows only one attachment to the debugger at a time. [See more][6])
117
+ [!] returns a _promise_ which is synchronized internally by recorderDoesn't work if the Chromium DevTools panel is open (as Chromium allows only one attachment to the debugger at a time. [See more][5])
120
118
 
121
119
  ### checkOption
122
120
 
@@ -134,9 +132,8 @@ I.checkOption('agree', '//form');
134
132
  #### Parameters
135
133
 
136
134
  - `field` **([string][3] | [object][4])** checkbox located by label | name | CSS | XPath | strict locator.
137
- - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
138
-
139
- Returns **[Promise][5]<any>**
135
+ - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
136
+ [!] returns a _promise_ which is synchronized internally by recorder
140
137
 
141
138
  ### clearCookie
142
139
 
@@ -150,9 +147,8 @@ I.clearCookie('test');
150
147
 
151
148
  #### Parameters
152
149
 
153
- - `cookie` **[string][3]?** (optional, `null` by default) cookie name
154
-
155
- Returns **[Promise][5]<any>**
150
+ - `cookie` **[string][3]?** (optional, `null` by default) cookie name
151
+ [!] returns a _promise_ which is synchronized internally by recorder
156
152
 
157
153
  ### clearField
158
154
 
@@ -168,8 +164,7 @@ I.clearField('#email');
168
164
 
169
165
  - `field`
170
166
  - `editable` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
171
-
172
- Returns **[Promise][5]<any>**
167
+ [!] returns a _promise_ which is synchronized internally by recorder
173
168
 
174
169
  ### click
175
170
 
@@ -198,9 +193,8 @@ I.click({css: 'nav a.login'});
198
193
  #### Parameters
199
194
 
200
195
  - `locator` **([string][3] | [object][4])** clickable link or button located by text, or any element located by CSS|XPath|strict locator.
201
- - `context` **([string][3]? | [object][4] | null)** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
202
-
203
- Returns **[Promise][5]<any>**
196
+ - `context` **([string][3]? | [object][4] | null)** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
197
+ [!] returns a _promise_ which is synchronized internally by recorder
204
198
 
205
199
  ### dontSee
206
200
 
@@ -215,9 +209,8 @@ I.dontSee('Login', '.nav'); // no login inside .nav element
215
209
  #### Parameters
216
210
 
217
211
  - `text` **[string][3]** which is not present.
218
- - `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator in which to perfrom search.
219
-
220
- Returns **[Promise][5]<any>**
212
+ - `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator in which to perfrom search.
213
+ [!] returns a _promise_ which is synchronized internally by recorder
221
214
 
222
215
  ### dontSeeCheckboxIsChecked
223
216
 
@@ -232,8 +225,7 @@ I.dontSeeCheckboxIsChecked('agree'); // located by name
232
225
  #### Parameters
233
226
 
234
227
  - `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
235
-
236
- Returns **[Promise][5]<any>**
228
+ [!] returns a _promise_ which is synchronized internally by recorder
237
229
 
238
230
  ### dontSeeCookie
239
231
 
@@ -246,8 +238,7 @@ I.dontSeeCookie('auth'); // no auth cookie
246
238
  #### Parameters
247
239
 
248
240
  - `name` **[string][3]** cookie name.
249
-
250
- Returns **[Promise][5]<any>**
241
+ [!] returns a _promise_ which is synchronized internally by recorder
251
242
 
252
243
  ### dontSeeCurrentUrlEquals
253
244
 
@@ -262,8 +253,7 @@ I.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also
262
253
  #### Parameters
263
254
 
264
255
  - `url` **[string][3]** value to check.
265
-
266
- Returns **[Promise][5]<any>**
256
+ [!] returns a _promise_ which is synchronized internally by recorder
267
257
 
268
258
  ### dontSeeElement
269
259
 
@@ -276,8 +266,7 @@ I.dontSeeElement('.modal'); // modal is not shown
276
266
  #### Parameters
277
267
 
278
268
  - `locator` **([string][3] | [object][4])** located by CSS|XPath|Strict locator.
279
-
280
- Returns **[Promise][5]<any>**
269
+ [!] returns a _promise_ which is synchronized internally by recorder
281
270
 
282
271
  ### dontSeeElementInDOM
283
272
 
@@ -290,8 +279,7 @@ I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or
290
279
  #### Parameters
291
280
 
292
281
  - `locator` **([string][3] | [object][4])** located by CSS|XPath|Strict locator.
293
-
294
- Returns **[Promise][5]<any>**
282
+ [!] returns a _promise_ which is synchronized internally by recorder
295
283
 
296
284
  ### dontSeeInCurrentUrl
297
285
 
@@ -300,8 +288,7 @@ Checks that current url does not contain a provided fragment.
300
288
  #### Parameters
301
289
 
302
290
  - `url` **[string][3]** value to check.
303
-
304
- Returns **[Promise][5]<any>**
291
+ [!] returns a _promise_ which is synchronized internally by recorder
305
292
 
306
293
  ### dontSeeInField
307
294
 
@@ -317,8 +304,7 @@ I.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS
317
304
 
318
305
  - `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
319
306
  - `value` **[string][3]** value to check.
320
-
321
- Returns **[Promise][5]<any>**
307
+ [!] returns a _promise_ which is synchronized internally by recorder
322
308
 
323
309
  ### dontSeeInSource
324
310
 
@@ -332,8 +318,7 @@ I.dontSeeInSource('<!--'); // no comments in source
332
318
 
333
319
  - `text`
334
320
  - `value` **[string][3]** to check.
335
-
336
- Returns **[Promise][5]&lt;any>**
321
+ [!] returns a _promise_ which is synchronized internally by recorder
337
322
 
338
323
  ### dontSeeInTitle
339
324
 
@@ -346,8 +331,7 @@ I.dontSeeInTitle('Error');
346
331
  #### Parameters
347
332
 
348
333
  - `text` **[string][3]** value to check.
349
-
350
- Returns **[Promise][5]&lt;any>**
334
+ [!] returns a _promise_ which is synchronized internally by recorder
351
335
 
352
336
  ### doubleClick
353
337
 
@@ -364,16 +348,15 @@ I.doubleClick('.btn.edit');
364
348
  #### Parameters
365
349
 
366
350
  - `locator` **([string][3] | [object][4])** clickable link or button located by text, or any element located by CSS|XPath|strict locator.
367
- - `context` **([string][3]? | [object][4])** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
368
-
369
- Returns **[Promise][5]&lt;any>**
351
+ - `context` **([string][3]? | [object][4])** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
352
+ [!] returns a _promise_ which is synchronized internally by recorder
370
353
 
371
354
  ### executeAsyncScript
372
355
 
373
356
  Executes async script on page.
374
357
  Provided function should execute a passed callback (as first argument) to signal it is finished.
375
358
 
376
- Example: In Vue.js to make components completely rendered we are waiting for [nextTick][7].
359
+ Example: In Vue.js to make components completely rendered we are waiting for [nextTick][6].
377
360
 
378
361
  ```js
379
362
  I.executeAsyncScript(function(done) {
@@ -394,11 +377,10 @@ let val = await I.executeAsyncScript(function(url, done) {
394
377
  #### Parameters
395
378
 
396
379
  - `args` **...any** to be passed to function.
380
+ [!] returns a _promise_ which is synchronized internally by recorderWrapper for asynchronous [evaluate][7].
381
+ Unlike NightmareJS implementation calling `done` will return its first argument.
397
382
  - `fn` **([string][3] | [function][8])** function to be executed in browser context.
398
383
 
399
- Returns **[Promise][5]&lt;any>** Wrapper for asynchronous [evaluate][9].
400
- Unlike NightmareJS implementation calling `done` will return its first argument.
401
-
402
384
  ### executeScript
403
385
 
404
386
  Executes sync script on a page.
@@ -428,10 +410,9 @@ let date = await I.executeScript(function(el) {
428
410
  #### Parameters
429
411
 
430
412
  - `args` **...any** to be passed to function.
413
+ [!] returns a _promise_ which is synchronized internally by recorderWrapper for synchronous [evaluate][7]
431
414
  - `fn` **([string][3] | [function][8])** function to be executed in browser context.
432
415
 
433
- Returns **[Promise][5]&lt;any>** Wrapper for synchronous [evaluate][9]
434
-
435
416
  ### fillField
436
417
 
437
418
  Fills a text field or textarea, after clearing its value, with the given string.
@@ -452,8 +433,7 @@ I.fillField({css: 'form#login input[name=username]'}, 'John');
452
433
 
453
434
  - `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
454
435
  - `value` **([string][3] | [object][4])** text value to fill.
455
-
456
- Returns **[Promise][5]&lt;any>**
436
+ [!] returns a _promise_ which is synchronized internally by recorder
457
437
 
458
438
  ### grabAttributeFrom
459
439
 
@@ -470,7 +450,7 @@ let hint = await I.grabAttributeFrom('#tooltip', 'title');
470
450
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
471
451
  - `attr` **[string][3]** attribute name.
472
452
 
473
- Returns **[Promise][5]&lt;[string][3]>** attribute value
453
+ Returns **[Promise][9]&lt;[string][3]>** attribute value
474
454
 
475
455
  ### grabAttributeFromAll
476
456
 
@@ -486,7 +466,7 @@ let hints = await I.grabAttributeFromAll('.tooltip', 'title');
486
466
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
487
467
  - `attr` **[string][3]** attribute name.
488
468
 
489
- Returns **[Promise][5]&lt;[Array][10]&lt;[string][3]>>** attribute value
469
+ Returns **[Promise][9]&lt;[Array][10]&lt;[string][3]>>** attribute value
490
470
 
491
471
  ### grabCookie
492
472
 
@@ -503,7 +483,7 @@ assert(cookie.value, '123456');
503
483
 
504
484
  - `name` **[string][3]?** cookie name.
505
485
 
506
- Returns **([Promise][5]&lt;[string][3]> | [Promise][5]&lt;[Array][10]&lt;[string][3]>>)** attribute valueCookie in JSON format. If name not passed returns all cookies for this domain.Multiple cookies can be received by passing query object `I.grabCookie({ secure: true});`. If you'd like get all cookies for all urls, use: `.grabCookie({ url: null }).`
486
+ Returns **([Promise][9]&lt;[string][3]> | [Promise][9]&lt;[Array][10]&lt;[string][3]>>)** attribute valueCookie in JSON format. If name not passed returns all cookies for this domain.Multiple cookies can be received by passing query object `I.grabCookie({ secure: true});`. If you'd like get all cookies for all urls, use: `.grabCookie({ url: null }).`
507
487
 
508
488
  ### grabCssPropertyFrom
509
489
 
@@ -520,7 +500,7 @@ const value = await I.grabCssPropertyFrom('h3', 'font-weight');
520
500
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
521
501
  - `cssProperty` **[string][3]** CSS property name.
522
502
 
523
- Returns **[Promise][5]&lt;[string][3]>** CSS value
503
+ Returns **[Promise][9]&lt;[string][3]>** CSS value
524
504
 
525
505
  ### grabCurrentUrl
526
506
 
@@ -532,7 +512,7 @@ let url = await I.grabCurrentUrl();
532
512
  console.log(`Current URL is [${url}]`);
533
513
  ```
534
514
 
535
- Returns **[Promise][5]&lt;[string][3]>** current URL
515
+ Returns **[Promise][9]&lt;[string][3]>** current URL
536
516
 
537
517
  ### grabElementBoundingRect
538
518
 
@@ -560,7 +540,7 @@ const width = await I.grabElementBoundingRect('h3', 'width');
560
540
  - `prop`
561
541
  - `elementSize` **[string][3]?** x, y, width or height of the given element.
562
542
 
563
- Returns **([Promise][5]&lt;DOMRect> | [Promise][5]&lt;[number][11]>)** Element bounding rectangle
543
+ Returns **([Promise][9]&lt;DOMRect> | [Promise][9]&lt;[number][11]>)** Element bounding rectangle
564
544
 
565
545
  ### grabHAR
566
546
 
@@ -586,7 +566,7 @@ let postHTML = await I.grabHTMLFrom('#post');
586
566
  - `locator`
587
567
  - `element` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
588
568
 
589
- Returns **[Promise][5]&lt;[string][3]>** HTML code for an element
569
+ Returns **[Promise][9]&lt;[string][3]>** HTML code for an element
590
570
 
591
571
  ### grabHTMLFromAll
592
572
 
@@ -602,7 +582,7 @@ let postHTMLs = await I.grabHTMLFromAll('.post');
602
582
  - `locator`
603
583
  - `element` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
604
584
 
605
- Returns **[Promise][5]&lt;[Array][10]&lt;[string][3]>>** HTML code for an element
585
+ Returns **[Promise][9]&lt;[Array][10]&lt;[string][3]>>** HTML code for an element
606
586
 
607
587
  ### grabNumberOfVisibleElements
608
588
 
@@ -617,7 +597,7 @@ let numOfElements = await I.grabNumberOfVisibleElements('p');
617
597
 
618
598
  - `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
619
599
 
620
- Returns **[Promise][5]&lt;[number][11]>** number of visible elements
600
+ Returns **[Promise][9]&lt;[number][11]>** number of visible elements
621
601
 
622
602
  ### grabPageScrollPosition
623
603
 
@@ -628,7 +608,7 @@ Resumes test execution, so **should be used inside an async function with `await
628
608
  let { x, y } = await I.grabPageScrollPosition();
629
609
  ```
630
610
 
631
- Returns **[Promise][5]&lt;PageScrollPosition>** scroll position
611
+ Returns **[Promise][9]&lt;PageScrollPosition>** scroll position
632
612
 
633
613
  ### grabTextFrom
634
614
 
@@ -645,7 +625,7 @@ If multiple elements found returns first element.
645
625
 
646
626
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
647
627
 
648
- Returns **[Promise][5]&lt;[string][3]>** attribute value
628
+ Returns **[Promise][9]&lt;[string][3]>** attribute value
649
629
 
650
630
  ### grabTextFromAll
651
631
 
@@ -660,7 +640,7 @@ let pins = await I.grabTextFromAll('#pin li');
660
640
 
661
641
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
662
642
 
663
- Returns **[Promise][5]&lt;[Array][10]&lt;[string][3]>>** attribute value
643
+ Returns **[Promise][9]&lt;[Array][10]&lt;[string][3]>>** attribute value
664
644
 
665
645
  ### grabTitle
666
646
 
@@ -671,7 +651,7 @@ Resumes test execution, so **should be used inside async with `await`** operator
671
651
  let title = await I.grabTitle();
672
652
  ```
673
653
 
674
- Returns **[Promise][5]&lt;[string][3]>** title
654
+ Returns **[Promise][9]&lt;[string][3]>** title
675
655
 
676
656
  ### grabValueFrom
677
657
 
@@ -687,7 +667,7 @@ let email = await I.grabValueFrom('input[name=email]');
687
667
 
688
668
  - `locator` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
689
669
 
690
- Returns **[Promise][5]&lt;[string][3]>** attribute value
670
+ Returns **[Promise][9]&lt;[string][3]>** attribute value
691
671
 
692
672
  ### grabValueFromAll
693
673
 
@@ -702,7 +682,7 @@ let inputs = await I.grabValueFromAll('//form/input');
702
682
 
703
683
  - `locator` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
704
684
 
705
- Returns **[Promise][5]&lt;[Array][10]&lt;[string][3]>>** attribute value
685
+ Returns **[Promise][9]&lt;[Array][10]&lt;[string][3]>>** attribute value
706
686
 
707
687
  ### haveHeader
708
688
 
@@ -732,9 +712,8 @@ I.moveCursorTo('#submit', 5,5);
732
712
 
733
713
  - `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
734
714
  - `offsetX` **[number][11]** (optional, `0` by default) X-axis offset.
735
- - `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
736
-
737
- Returns **[Promise][5]&lt;any>**
715
+ - `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
716
+ [!] returns a _promise_ which is synchronized internally by recorder
738
717
 
739
718
  ### pressKey
740
719
 
@@ -757,7 +736,7 @@ Reload the current page.
757
736
  I.refreshPage();
758
737
  ```
759
738
 
760
- Returns **[Promise][5]&lt;any>**
739
+ [!] returns a _promise_ which is synchronized internally by recorder
761
740
 
762
741
  ### resizeWindow
763
742
 
@@ -768,8 +747,7 @@ First parameter can be set to `maximize`.
768
747
 
769
748
  - `width` **[number][11]** width in pixels or `maximize`.
770
749
  - `height` **[number][11]** height in pixels.
771
-
772
- Returns **[Promise][5]&lt;any>**
750
+ [!] returns a _promise_ which is synchronized internally by recorder
773
751
 
774
752
  ### rightClick
775
753
 
@@ -787,9 +765,8 @@ I.rightClick('Click me', '.context');
787
765
  #### Parameters
788
766
 
789
767
  - `locator` **([string][3] | [object][4])** clickable element located by CSS|XPath|strict locator.
790
- - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|XPath|strict locator.
791
-
792
- Returns **[Promise][5]&lt;any>**
768
+ - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|XPath|strict locator.
769
+ [!] returns a _promise_ which is synchronized internally by recorder
793
770
 
794
771
  ### saveElementScreenshot
795
772
 
@@ -804,8 +781,7 @@ I.saveElementScreenshot(`#submit`,'debug.png');
804
781
 
805
782
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
806
783
  - `fileName` **[string][3]** file name to save.
807
-
808
- Returns **[Promise][5]&lt;any>**
784
+ [!] returns a _promise_ which is synchronized internally by recorder
809
785
 
810
786
  ### saveScreenshot
811
787
 
@@ -821,9 +797,8 @@ I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scro
821
797
  #### Parameters
822
798
 
823
799
  - `fileName` **[string][3]** file name to save.
824
- - `fullPage` **[boolean][13]** (optional, `false` by default) flag to enable fullscreen screenshot mode.
825
-
826
- Returns **[Promise][5]&lt;any>**
800
+ - `fullPage` **[boolean][13]** (optional, `false` by default) flag to enable fullscreen screenshot mode.
801
+ [!] returns a _promise_ which is synchronized internally by recorder
827
802
 
828
803
  ### scrollPageToBottom
829
804
 
@@ -833,7 +808,7 @@ Scroll page to the bottom.
833
808
  I.scrollPageToBottom();
834
809
  ```
835
810
 
836
- Returns **[Promise][5]&lt;any>**
811
+ [!] returns a _promise_ which is synchronized internally by recorder
837
812
 
838
813
  ### scrollPageToTop
839
814
 
@@ -843,7 +818,7 @@ Scroll page to the top.
843
818
  I.scrollPageToTop();
844
819
  ```
845
820
 
846
- Returns **[Promise][5]&lt;any>**
821
+ [!] returns a _promise_ which is synchronized internally by recorder
847
822
 
848
823
  ### scrollTo
849
824
 
@@ -859,9 +834,8 @@ I.scrollTo('#submit', 5, 5);
859
834
 
860
835
  - `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
861
836
  - `offsetX` **[number][11]** (optional, `0` by default) X-axis offset.
862
- - `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
863
-
864
- Returns **[Promise][5]&lt;any>**
837
+ - `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
838
+ [!] returns a _promise_ which is synchronized internally by recorder
865
839
 
866
840
  ### see
867
841
 
@@ -877,9 +851,8 @@ I.see('Register', {css: 'form.register'}); // use strict locator
877
851
  #### Parameters
878
852
 
879
853
  - `text` **[string][3]** expected on page.
880
- - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
881
-
882
- Returns **[Promise][5]&lt;any>**
854
+ - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
855
+ [!] returns a _promise_ which is synchronized internally by recorder
883
856
 
884
857
  ### seeCheckboxIsChecked
885
858
 
@@ -894,8 +867,7 @@ I.seeCheckboxIsChecked({css: '#signup_form input[type=checkbox]'});
894
867
  #### Parameters
895
868
 
896
869
  - `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
897
-
898
- Returns **[Promise][5]&lt;any>**
870
+ [!] returns a _promise_ which is synchronized internally by recorder
899
871
 
900
872
  ### seeCookie
901
873
 
@@ -908,8 +880,7 @@ I.seeCookie('Auth');
908
880
  #### Parameters
909
881
 
910
882
  - `name` **[string][3]** cookie name.
911
-
912
- Returns **[Promise][5]&lt;any>**
883
+ [!] returns a _promise_ which is synchronized internally by recorder
913
884
 
914
885
  ### seeCurrentUrlEquals
915
886
 
@@ -925,8 +896,7 @@ I.seeCurrentUrlEquals('http://my.site.com/register');
925
896
  #### Parameters
926
897
 
927
898
  - `url` **[string][3]** value to check.
928
-
929
- Returns **[Promise][5]&lt;any>**
899
+ [!] returns a _promise_ which is synchronized internally by recorder
930
900
 
931
901
  ### seeElement
932
902
 
@@ -940,8 +910,7 @@ I.seeElement('#modal');
940
910
  #### Parameters
941
911
 
942
912
  - `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
943
-
944
- Returns **[Promise][5]&lt;any>**
913
+ [!] returns a _promise_ which is synchronized internally by recorder
945
914
 
946
915
  ### seeElementInDOM
947
916
 
@@ -955,8 +924,7 @@ I.seeElementInDOM('#modal');
955
924
  #### Parameters
956
925
 
957
926
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
958
-
959
- Returns **[Promise][5]&lt;any>**
927
+ [!] returns a _promise_ which is synchronized internally by recorder
960
928
 
961
929
  ### seeInCurrentUrl
962
930
 
@@ -969,8 +937,7 @@ I.seeInCurrentUrl('/register'); // we are on registration page
969
937
  #### Parameters
970
938
 
971
939
  - `url` **[string][3]** a fragment to check
972
-
973
- Returns **[Promise][5]&lt;any>**
940
+ [!] returns a _promise_ which is synchronized internally by recorder
974
941
 
975
942
  ### seeInField
976
943
 
@@ -988,8 +955,7 @@ I.seeInField('#searchform input','Search');
988
955
 
989
956
  - `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
990
957
  - `value` **[string][3]** value to check.
991
-
992
- Returns **[Promise][5]&lt;any>**
958
+ [!] returns a _promise_ which is synchronized internally by recorder
993
959
 
994
960
  ### seeInSource
995
961
 
@@ -1002,8 +968,7 @@ I.seeInSource('<h1>Green eggs &amp; ham</h1>');
1002
968
  #### Parameters
1003
969
 
1004
970
  - `text` **[string][3]** value to check.
1005
-
1006
- Returns **[Promise][5]&lt;any>**
971
+ [!] returns a _promise_ which is synchronized internally by recorder
1007
972
 
1008
973
  ### seeInTitle
1009
974
 
@@ -1016,8 +981,7 @@ I.seeInTitle('Home Page');
1016
981
  #### Parameters
1017
982
 
1018
983
  - `text` **[string][3]** text value to check.
1019
-
1020
- Returns **[Promise][5]&lt;any>**
984
+ [!] returns a _promise_ which is synchronized internally by recorder
1021
985
 
1022
986
  ### seeNumberOfElements
1023
987
 
@@ -1032,8 +996,7 @@ I.seeNumberOfElements('#submitBtn', 1);
1032
996
 
1033
997
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1034
998
  - `num` **[number][11]** number of elements.
1035
-
1036
- Returns **[Promise][5]&lt;any>**
999
+ [!] returns a _promise_ which is synchronized internally by recorder
1037
1000
 
1038
1001
  ### seeNumberOfVisibleElements
1039
1002
 
@@ -1048,8 +1011,7 @@ I.seeNumberOfVisibleElements('.buttons', 3);
1048
1011
 
1049
1012
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1050
1013
  - `num` **[number][11]** number of elements.
1051
-
1052
- Returns **[Promise][5]&lt;any>**
1014
+ [!] returns a _promise_ which is synchronized internally by recorder
1053
1015
 
1054
1016
  ### selectOption
1055
1017
 
@@ -1076,8 +1038,7 @@ I.selectOption('Which OS do you use?', ['Android', 'iOS']);
1076
1038
 
1077
1039
  - `select` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
1078
1040
  - `option` **([string][3] | [Array][10]&lt;any>)** visible text or value of option.
1079
-
1080
- Returns **[Promise][5]&lt;any>**
1041
+ [!] returns a _promise_ which is synchronized internally by recorder
1081
1042
 
1082
1043
  ### setCookie
1083
1044
 
@@ -1098,9 +1059,8 @@ I.setCookie([
1098
1059
  #### Parameters
1099
1060
 
1100
1061
  - `cookie` **(Cookie | [Array][10]&lt;Cookie>)** a cookie object or array of cookie objects.
1101
-
1102
- Returns **[Promise][5]&lt;any>** Wrapper for `.cookies.set(cookie)`.
1103
- [See more][14]
1062
+ [!] returns a _promise_ which is synchronized internally by recorderWrapper for `.cookies.set(cookie)`.
1063
+ [See more][14]
1104
1064
 
1105
1065
  ### triggerMouseEvent
1106
1066
 
@@ -1133,9 +1093,8 @@ I.uncheckOption('agree', '//form');
1133
1093
  #### Parameters
1134
1094
 
1135
1095
  - `field` **([string][3] | [object][4])** checkbox located by label | name | CSS | XPath | strict locator.
1136
- - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
1137
-
1138
- Returns **[Promise][5]&lt;any>**
1096
+ - `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
1097
+ [!] returns a _promise_ which is synchronized internally by recorder
1139
1098
 
1140
1099
  ### wait
1141
1100
 
@@ -1148,8 +1107,7 @@ I.wait(2); // wait 2 secs
1148
1107
  #### Parameters
1149
1108
 
1150
1109
  - `sec` **[number][11]** number of second to wait.
1151
-
1152
- Returns **[Promise][5]&lt;any>**
1110
+ [!] returns a _promise_ which is synchronized internally by recorder
1153
1111
 
1154
1112
  ### waitForDetached
1155
1113
 
@@ -1163,9 +1121,8 @@ I.waitForDetached('#popup');
1163
1121
  #### Parameters
1164
1122
 
1165
1123
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1166
- - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1167
-
1168
- Returns **[Promise][5]&lt;any>**
1124
+ - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1125
+ [!] returns a _promise_ which is synchronized internally by recorder
1169
1126
 
1170
1127
  ### waitForElement
1171
1128
 
@@ -1181,8 +1138,7 @@ I.waitForElement('.btn.continue', 5); // wait for 5 secs
1181
1138
 
1182
1139
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1183
1140
  - `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
1184
-
1185
- Returns **[Promise][5]&lt;any>**
1141
+ [!] returns a _promise_ which is synchronized internally by recorder
1186
1142
 
1187
1143
  ### waitForFunction
1188
1144
 
@@ -1203,9 +1159,8 @@ I.waitForFunction((count) => window.requests == count, [3], 5) // pass args and
1203
1159
 
1204
1160
  - `fn` **([string][3] | [function][8])** to be executed in browser context.
1205
1161
  - `argsOrSec` **([Array][10]&lt;any> | [number][11])?** (optional, `1` by default) arguments for function or seconds.
1206
- - `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
1207
-
1208
- Returns **[Promise][5]&lt;any>**
1162
+ - `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
1163
+ [!] returns a _promise_ which is synchronized internally by recorder
1209
1164
 
1210
1165
  ### waitForInvisible
1211
1166
 
@@ -1219,9 +1174,8 @@ I.waitForInvisible('#popup');
1219
1174
  #### Parameters
1220
1175
 
1221
1176
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1222
- - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1223
-
1224
- Returns **[Promise][5]&lt;any>**
1177
+ - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1178
+ [!] returns a _promise_ which is synchronized internally by recorder
1225
1179
 
1226
1180
  ### waitForText
1227
1181
 
@@ -1238,9 +1192,8 @@ I.waitForText('Thank you, form has been submitted', 5, '#modal');
1238
1192
 
1239
1193
  - `text` **[string][3]** to wait for.
1240
1194
  - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1241
- - `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator.
1242
-
1243
- Returns **[Promise][5]&lt;any>**
1195
+ - `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator.
1196
+ [!] returns a _promise_ which is synchronized internally by recorder
1244
1197
 
1245
1198
  ### waitForVisible
1246
1199
 
@@ -1254,9 +1207,8 @@ I.waitForVisible('#popup');
1254
1207
  #### Parameters
1255
1208
 
1256
1209
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1257
- - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1258
-
1259
- Returns **[Promise][5]&lt;any>**
1210
+ - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1211
+ [!] returns a _promise_ which is synchronized internally by recorder
1260
1212
 
1261
1213
  ### waitToHide
1262
1214
 
@@ -1270,9 +1222,8 @@ I.waitToHide('#popup');
1270
1222
  #### Parameters
1271
1223
 
1272
1224
  - `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
1273
- - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1274
-
1275
- Returns **[Promise][5]&lt;any>**
1225
+ - `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
1226
+ [!] returns a _promise_ which is synchronized internally by recorder
1276
1227
 
1277
1228
  [1]: https://github.com/segmentio/nightmare
1278
1229
 
@@ -1282,15 +1233,15 @@ Returns **[Promise][5]&lt;any>**
1282
1233
 
1283
1234
  [4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
1284
1235
 
1285
- [5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
1236
+ [5]: https://github.com/rosshinkley/nightmare-upload#important-note-about-setting-file-upload-inputs
1286
1237
 
1287
- [6]: https://github.com/rosshinkley/nightmare-upload#important-note-about-setting-file-upload-inputs
1238
+ [6]: https://vuejs.org/v2/api/#Vue-nextTick
1288
1239
 
1289
- [7]: https://vuejs.org/v2/api/#Vue-nextTick
1240
+ [7]: https://github.com/segmentio/nightmare#evaluatefn-arg1-arg2
1290
1241
 
1291
1242
  [8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
1292
1243
 
1293
- [9]: https://github.com/segmentio/nightmare#evaluatefn-arg1-arg2
1244
+ [9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
1294
1245
 
1295
1246
  [10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
1296
1247