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
package/docs/plugins.md CHANGED
@@ -512,6 +512,46 @@ I.seeElement('=user'); // matches => [data-qa=user]
512
512
  I.click('=sign-up'); // matches => [data-qa=sign-up]
513
513
  ```
514
514
 
515
+ Using `data-qa` OR `data-test` attribute with `=` prefix:
516
+
517
+ ```js
518
+ // in codecept.conf.js
519
+ plugins: {
520
+ customLocator: {
521
+ enabled: true,
522
+ prefix: '=',
523
+ attribute: ['data-qa', 'data-test'],
524
+ strategy: 'xpath'
525
+ }
526
+ }
527
+ ```
528
+
529
+ In a test:
530
+
531
+ ```js
532
+ I.seeElement('=user'); // matches => //*[@data-qa=user or @data-test=user]
533
+ I.click('=sign-up'); // matches => //*[data-qa=sign-up or @data-test=sign-up]
534
+ ```
535
+
536
+ ```js
537
+ // in codecept.conf.js
538
+ plugins: {
539
+ customLocator: {
540
+ enabled: true,
541
+ prefix: '=',
542
+ attribute: ['data-qa', 'data-test'],
543
+ strategy: 'css'
544
+ }
545
+ }
546
+ ```
547
+
548
+ In a test:
549
+
550
+ ```js
551
+ I.seeElement('=user'); // matches => [data-qa=user],[data-test=user]
552
+ I.click('=sign-up'); // matches => [data-qa=sign-up],[data-test=sign-up]
553
+ ```
554
+
515
555
  ### Parameters
516
556
 
517
557
  - `config`
@@ -682,7 +722,7 @@ Run tests with plugin enabled:
682
722
  plugins: {
683
723
  retryFailedStep: {
684
724
  enabled: true,
685
- ignoreSteps: [
725
+ ignoredSteps: [
686
726
  'scroll*', // ignore all scroll steps
687
727
  /Cookie/, // ignore all steps with a Cookie in it (by regexp)
688
728
  ]
@@ -0,0 +1,30 @@
1
+ # Secrets
2
+
3
+ It is possible to mask out sensitive data when passing it to steps. This is important when filling password fields, or sending secure keys to API endpoint.
4
+
5
+ Wrap data in `secret` function to mask sensitive values in output and logs.
6
+
7
+ For basic string `secret` just wrap a value into a string:
8
+
9
+ ```js
10
+ I.fillField('password', secret('123456'));
11
+ ```
12
+
13
+ When executed it will be printed like this:
14
+
15
+ ```
16
+ I fill field "password" "*****"
17
+ ```
18
+
19
+ For an object, which can be a payload to POST request, specify which fields should be masked:
20
+
21
+ ```js
22
+ I.sendPostRequest('/login', secret({
23
+ name: 'davert',
24
+ password: '123456'
25
+ }, 'password'))
26
+ ```
27
+
28
+ The object created from `secret` is as Proxy to the object passed in. When printed password will be replaced with ****.
29
+
30
+ > ⚠️ Only direct properties of the object can be masked via `secret`
@@ -8,4 +8,4 @@ I.amOnPage('/login'); // opens a login page
8
8
  ```
9
9
 
10
10
  @param {string} url url path or global url.
11
- @return {Promise<any>}
11
+ @return {void} automatically synchronized promise with recorder #!
@@ -6,4 +6,4 @@ I.appendField('#myTextField', 'appended');
6
6
  ```
7
7
  @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator
8
8
  @param {string} value text value to append.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.attachFile('form input[name=avatar]', 'data/avatar.jpg');
9
9
 
10
10
  @param {CodeceptJS.LocatorOrString} locator field located by label|name|CSS|XPath|strict locator.
11
11
  @param {string} pathToFile local file path relative to codecept.json config file.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -10,4 +10,4 @@ I.checkOption('agree', '//form');
10
10
  ```
11
11
  @param {CodeceptJS.LocatorOrString} field checkbox located by label | name | CSS | XPath | strict locator.
12
12
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS | XPath | strict locator.
13
- @return {Promise<any>}
13
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.clearCookie('test');
7
7
  ```
8
8
 
9
9
  @param {?string} [cookie=null] (optional, `null` by default) cookie name
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -6,4 +6,4 @@ I.clearField('user[email]');
6
6
  I.clearField('#email');
7
7
  ```
8
8
  @param {LocatorOrString} editable field located by label|name|CSS|XPath|strict locator.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -22,4 +22,4 @@ I.click({css: 'nav a.login'});
22
22
 
23
23
  @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
24
24
  @param {?CodeceptJS.LocatorOrString | null} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
25
- @return {Promise<any>}
25
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.clickLink('Logout', '#nav');
5
5
  ```
6
6
  @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator
7
7
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -4,4 +4,4 @@ Close current tab.
4
4
  I.closeCurrentTab();
5
5
  ```
6
6
 
7
- @return {Promise<any>}
7
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ Close all tabs except for the current one.
5
5
  I.closeOtherTabs();
6
6
  ```
7
7
 
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.dontSee('Login', '.nav'); // no login inside .nav element
8
8
 
9
9
  @param {string} text which is not present.
10
10
  @param {CodeceptJS.LocatorOrString} [context] (optional) element located by CSS|XPath|strict locator in which to perfrom search.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.dontSeeCheckboxIsChecked('agree'); // located by name
7
7
  ```
8
8
 
9
9
  @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.dontSeeCookie('auth'); // no auth cookie
5
5
  ```
6
6
 
7
7
  @param {string} name cookie name.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also
7
7
  ```
8
8
 
9
9
  @param {string} url value to check.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.dontSeeElement('.modal'); // modal is not shown
5
5
  ```
6
6
 
7
7
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|Strict locator.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or
5
5
  ```
6
6
 
7
7
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|Strict locator.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -1,4 +1,4 @@
1
1
  Checks that current url does not contain a provided fragment.
2
2
 
3
3
  @param {string} url value to check.
4
- @return {Promise<any>}
4
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS
8
8
 
9
9
  @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
10
10
  @param {string} value value to check.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.dontSeeInSource('<!--'); // no comments in source
5
5
  ```
6
6
 
7
7
  @param {string} value to check.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.dontSeeInTitle('Error');
5
5
  ```
6
6
 
7
7
  @param {string} text value to check.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -10,4 +10,4 @@ I.doubleClick('.btn.edit');
10
10
 
11
11
  @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
12
12
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
13
- @return {Promise<any>}
13
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.downloadFile('td[class="text-right file-link"] a', 'thisIsCustomName');
9
9
 
10
10
  @param {CodeceptJS.LocatorOrString} locator clickable link or button located by CSS|XPath locator.
11
11
  @param {string} file custom file name.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -6,4 +6,4 @@ I.dragAndDrop('#dragHandle', '#container');
6
6
 
7
7
  @param {LocatorOrString} srcElement located by CSS|XPath|strict locator.
8
8
  @param {LocatorOrString} destElement located by CSS|XPath|strict locator.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.dragSlider('#slider', -70);
8
8
 
9
9
  @param {CodeceptJS.LocatorOrString} locator located by label|name|CSS|XPath|strict locator.
10
10
  @param {number} offsetX position to drag.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -21,4 +21,4 @@ let val = await I.executeAsyncScript(function(url, done) {
21
21
 
22
22
  @param {string|function} fn function to be executed in browser context.
23
23
  @param {...any} args to be passed to function.
24
- @return {Promise<any>}
24
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -23,4 +23,4 @@ let date = await I.executeScript(function(el) {
23
23
 
24
24
  @param {string|function} fn function to be executed in browser context.
25
25
  @param {...any} args to be passed to function.
26
- @return {Promise<any>}
26
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -13,4 +13,4 @@ I.fillField({css: 'form#login input[name=username]'}, 'John');
13
13
  ```
14
14
  @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
15
15
  @param {CodeceptJS.StringOrSecret} value text value to fill.
16
- @return {Promise<any>}
16
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -25,4 +25,4 @@ I.forceClick({css: 'nav a.login'});
25
25
 
26
26
  @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
27
27
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
28
- @return {Promise<any>}
28
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -15,4 +15,4 @@ I.forceRightClick('Menu');
15
15
 
16
16
  @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
17
17
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
18
- @return {Promise<any>}
18
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -17,4 +17,4 @@ let data = await I.grabDataFromPerformanceTiming();
17
17
  loadEventEnd: 241
18
18
  }
19
19
  ```
20
- @return {Promise<any>}
20
+ @return {Promise<any>} automatically synchronized promise through #recorder
@@ -9,4 +9,4 @@ I.moveCursorTo('#submit', 5,5);
9
9
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
10
10
  @param {number} [offsetX=0] (optional, `0` by default) X-axis offset.
11
11
  @param {number} [offsetY=0] (optional, `0` by default) Y-axis offset.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -4,4 +4,4 @@ Open new tab and switch to it.
4
4
  I.openNewTab();
5
5
  ```
6
6
 
7
- @return {Promise<any>}
7
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.pressKey(['Control','a']);
9
9
  ```
10
10
 
11
11
  @param {string|string[]} key key or array of keys to press.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.pressKeyUp('Control');
9
9
  ```
10
10
 
11
11
  @param {string} key name of key to press down.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.pressKeyUp('Control');
9
9
  ```
10
10
 
11
11
  @param {string} key name of key to release.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -57,4 +57,4 @@ Some of the supported key names are:
57
57
  - `'Tab'`
58
58
 
59
59
  @param {string|string[]} key key or array of keys to press.
60
- @return {Promise<any>}
60
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -3,4 +3,4 @@ Reload the current page.
3
3
  ```js
4
4
  I.refreshPage();
5
5
  ```
6
- @return {Promise<any>}
6
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -3,4 +3,4 @@ First parameter can be set to `maximize`.
3
3
 
4
4
  @param {number} width width in pixels or `maximize`.
5
5
  @param {number} height height in pixels.
6
- @return {Promise<any>}
6
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -11,4 +11,4 @@ I.rightClick('Click me', '.context');
11
11
 
12
12
  @param {CodeceptJS.LocatorOrString} locator clickable element located by CSS|XPath|strict locator.
13
13
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS|XPath|strict locator.
14
- @return {Promise<any>}
14
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.saveElementScreenshot(`#submit`,'debug.png');
7
7
 
8
8
  @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
9
9
  @param {string} fileName file name to save.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scro
9
9
 
10
10
  @param {string} fileName file name to save.
11
11
  @param {boolean} [fullPage=false] (optional, `false` by default) flag to enable fullscreen screenshot mode.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.say('This is by default'); //cyan is used
7
7
  ```
8
8
  @param {string} text expected on console log.
9
9
  @param {string} [color='cyan'] color you want to use.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.scrollIntoView('#submit', { behavior: "smooth", block: "center", inline: "cent
8
8
 
9
9
  @param {LocatorOrString} locator located by CSS|XPath|strict locator.
10
10
  @param {ScrollIntoViewOptions} scrollIntoViewOptions see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -3,4 +3,4 @@ Scroll page to the bottom.
3
3
  ```js
4
4
  I.scrollPageToBottom();
5
5
  ```
6
- @return {Promise<any>}
6
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -3,4 +3,4 @@ Scroll page to the top.
3
3
  ```js
4
4
  I.scrollPageToTop();
5
5
  ```
6
- @return {Promise<any>}
6
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.scrollTo('#submit', 5, 5);
9
9
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
10
10
  @param {number} [offsetX=0] (optional, `0` by default) X-axis offset.
11
11
  @param {number} [offsetY=0] (optional, `0` by default) Y-axis offset.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.see('Register', {css: 'form.register'}); // use strict locator
8
8
  ```
9
9
  @param {string} text expected on page.
10
10
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -6,4 +6,4 @@ I.seeAttributesOnElements('//form', { method: "post"});
6
6
 
7
7
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
8
8
  @param {object} attributes attributes and their values to check.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.seeCheckboxIsChecked({css: '#signup_form input[type=checkbox]'});
7
7
  ```
8
8
 
9
9
  @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.seeCookie('Auth');
5
5
  ```
6
6
 
7
7
  @param {string} name cookie name.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -6,4 +6,4 @@ I.seeCssPropertiesOnElements('h3', { 'font-weight': "bold"});
6
6
 
7
7
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
8
8
  @param {object} cssProperties object with CSS properties and their values to check.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.seeCurrentUrlEquals('http://my.site.com/register');
8
8
  ```
9
9
 
10
10
  @param {string} url value to check.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ Element is located by CSS or XPath.
5
5
  I.seeElement('#modal');
6
6
  ```
7
7
  @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ Element is located by CSS or XPath.
5
5
  I.seeElementInDOM('#modal');
6
6
  ```
7
7
  @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.seeInCurrentUrl('/register'); // we are on registration page
5
5
  ```
6
6
 
7
7
  @param {string} url a fragment to check
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.seeInField('#searchform input','Search');
9
9
  ```
10
10
  @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
11
11
  @param {string} value value to check.
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ given string.
5
5
  I.seeInPopup('Popup text');
6
6
  ```
7
7
  @param {string} text value to check.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -4,4 +4,4 @@ Checks that the current page contains the given string in its raw source code.
4
4
  I.seeInSource('<h1>Green eggs &amp; ham</h1>');
5
5
  ```
6
6
  @param {string} text value to check.
7
- @return {Promise<any>}
7
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.seeInTitle('Home Page');
5
5
  ```
6
6
 
7
7
  @param {string} text text value to check.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -8,4 +8,4 @@ I.seeNumberOfElements('#submitBtn', 1);
8
8
 
9
9
  @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
10
10
  @param {number} num number of elements.
11
- @return {Promise<any>}
11
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.seeNumberOfVisibleElements('.buttons', 3);
7
7
 
8
8
  @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
9
9
  @param {number} num number of elements.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -6,4 +6,4 @@ I.seeTextEquals('text', 'h1');
6
6
 
7
7
  @param {string} text element value to check.
8
8
  @param {CodeceptJS.LocatorOrString?} [context=null] element located by CSS|XPath|strict locator.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.seeTitleEquals('Test title.');
5
5
  ```
6
6
 
7
7
  @param {string} text value to check.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -18,4 +18,4 @@ I.selectOption('Which OS do you use?', ['Android', 'iOS']);
18
18
  ```
19
19
  @param {LocatorOrString} select field located by label|name|CSS|XPath|strict locator.
20
20
  @param {string|Array<*>} option visible text or value of option.
21
- @return {Promise<any>}
21
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -13,4 +13,4 @@ I.setCookie([
13
13
  ```
14
14
 
15
15
  @param {Cookie|Array<Cookie>} cookie a cookie object or array of cookie objects.
16
- @return {Promise<any>}
16
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -9,4 +9,4 @@ I.setGeoLocation(121.21, 11.56, 10);
9
9
  @param {number} latitude to set.
10
10
  @param {number} longitude to set
11
11
  @param {number=} altitude (optional, null by default) to set
12
- @return {Promise<any>}
12
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -6,4 +6,4 @@ I.switchTo(); // switch back to main page
6
6
  ```
7
7
 
8
8
  @param {?CodeceptJS.LocatorOrString} [locator=null] (optional, `null` by default) element located by CSS|XPath|strict locator.
9
- @return {Promise<any>}
9
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.switchToNextTab(2);
7
7
 
8
8
  @param {number} [num] (optional) number of tabs to switch forward, default: 1.
9
9
  @param {number | null} [sec] (optional) time in seconds to wait.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -7,4 +7,4 @@ I.switchToPreviousTab(2);
7
7
 
8
8
  @param {number} [num] (optional) number of tabs to switch backward, default: 1.
9
9
  @param {number?} [sec] (optional) time in seconds to wait.
10
- @return {Promise<any>}
10
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -15,4 +15,4 @@ I.type(['T', 'E', 'X', 'T']);
15
15
 
16
16
  @param {string|string[]} key or array of keys to type.
17
17
  @param {?number} [delay=null] (optional) delay in ms between key presses
18
- @return {Promise<any>}
18
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -10,4 +10,4 @@ I.uncheckOption('agree', '//form');
10
10
  ```
11
11
  @param {CodeceptJS.LocatorOrString} field checkbox located by label | name | CSS | XPath | strict locator.
12
12
  @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS | XPath | strict locator.
13
- @return {Promise<any>}
13
+ [!] returns a _promise_ which is synchronized internally by recorder
@@ -5,4 +5,4 @@ I.wait(2); // wait 2 secs
5
5
  ```
6
6
 
7
7
  @param {number} sec number of second to wait.
8
- @return {Promise<any>}
8
+ [!] returns a _promise_ which is synchronized internally by recorder